এমকেভি ফাইলগুলি থেকে সাবটাইটেলটি বের করুন


39

সমস্যাটি হ'ল উবুন্টুতে ভিডিওপ্লেয়ারদের একীভূত কেন্দ্রীয় ইউরোপীয় সাবটাইটেলগুলির সাথে একটি সমস্যা রয়েছে The সমাধানটি সেগুলি বের করে নেওয়া is টার্মিনালটিতে একটি কমান্ড বা এমকিভি ফাইল থেকে সাবটাইটেলটি বের করার কোনও প্রোগ্রাম আছে কি কেউ জানেন?

উত্তর:


58

ইনস্টল করুন mkvtoolnixসঙ্গে sudo apt-get install mkvtoolnix

টার্মিনাল থেকে চালান: mkvextract tracks <your_mkv_video> <track_numer>:<subtitle_file.srt>

mkvinfoট্র্যাক সম্পর্কে তথ্য পেতে ব্যবহার করুন ।

এই ইউটিলিটিটি ব্যবহার করে আপনি যে কোনও ট্র্যাক এমনকি অডিও বা ভিডিওও বের করতে পারবেন।


9
mkvinfoএটি "ট্র্যাক নম্বর: 2 (এমকেভ্র্যামের জন্য ট্র্যাক আইডি এবং এমকেভেক্সট্র্যাক্ট: 1)" এর মত জিনিসগুলি ব্যবহার করবেন না যা বিভ্রান্তিকর। ব্যবহারmkvmerge -i <filename>
gcb

এছাড়াও যে মনে রাখবেন, উল্লেখিত ডক্স , mkvextract ট্র্যাক ধরন, দেওয়া এক্সটেনশান দ্বারা ফাইল আউটপুট ফরম্যাট নির্ধারণ করে (তাই প্রকার দ্বারা রিপোর্ট পরীক্ষা mkvmerge -i <filename>)।
চিত্রগ্রাহক

সমস্ত ফাইল ধারক মধ্যে সাবটাইটেল ডেটা (বাইট) স্থাপন করা হয়? কারণ বড় ভিডিও ফাইলটি ধীরে ধীরে এটি কাজ করে ... (500 এমবি 1 জিবি 4 জিবি। এম কেভি ফাইল) আমি ভেবেছিলাম এটি আরও দ্রুত কাজ করবে এবং আমি ভেবেছিলাম ভিডিও ধারক ফাইলের নির্দিষ্ট অংশে সাবটাইটেলগুলির বাইট স্থাপন করা হয়েছে তবে এটি ffmpeg বা mkvextract পড়ে সমস্ত ফাইল পড়ুন এবং কেবল সমস্ত ফাইল পড়ার পরে সাবটাইটেলগুলি
সরান

2
@ জিসিবি এবং এমকিভ্র্যাম এবং এমকেভেক্সট্র্যাক্টের জন্য ইংরাজী ট্র্যাক আইডিতে এটি কীভাবে বিভ্রান্তিকর হয় ? এটি সহজ, কেবল এমকেভেক্সট্রাক্ট বা এমকেভ্রিমের জন্য সেই ট্র্যাক আইডিটি ব্যবহার করুন। অ্যারেটির দৈর্ঘ্য এবং প্রোগ্রামিংয়ের উপাদানগুলির সূচকগুলিও আপনার জন্য বিভ্রান্তিকর?
ব্যবহারকারী 25

8

আপনি mkvtoolnix ব্যবহার করতে পারেন।

sudo apt-get install mkvtoolnix

এখন আর একটি টিপ, কারণ এমকেভি ফাইলগুলিতে অনেকগুলি সাবটাইটেল থাকতে পারে, তাই টিপটি হ'ল এই স্ক্রিপ্টটি আপনি যে ভাষাটি চান তা সন্ধান করতে পারেন, উদাহরণস্বরূপ আপনি যদি ইংরেজী চান তবে এটি কেবল ইংরেজী ডাউনলোড করবে।

লিপি :

#!/bin/bash
# Extract subtitles from each MKV file in the given directory

# If no directory is given, work in local dir
if [ "$1" = "" ]; then
  DIR="."
else
  DIR="$1"
fi

# Get all the MKV files in this dir and its subdirs
find "$DIR" -type f -name '*.mkv' | while read filename
do
  # Find out which tracks contain the subtitles
  mkvmerge -i "$filename" | grep 'subtitles' | while read subline
  do
    # Grep the number of the subtitle track
    tracknumber=`echo $subline | egrep -o "[0-9]{1,2}" | head -1`

    # Get base name for subtitle
    subtitlename=${filename%.*}

    # Extract the track to a .tmp file
    `mkvextract tracks "$filename" $tracknumber:"$subtitlename.srt.tmp" > /dev/null 2>&1`
    `chmod g+rw "$subtitlename.srt.tmp"`


    # Do a super-primitive language guess: ENGLISH
    langtest=`egrep -ic ' you | to | the ' "$subtitlename".srt.tmp`
    trimregex=""



    # Check if subtitle passes our language filter (10 or more matches)
    if [ $langtest -ge 10 ]; then
      # Regex to remove credits at the end of subtitles (read my reason why!)
      `sed 's/\r//g' < "$subtitlename.srt.tmp" \
        | sed 's/%/%%/g' \
        | awk '{if (a){printf("\t")};printf $0; a=1; } /^$/{print ""; a=0;}' \
        | grep -iv "$trimregex" \
        | sed 's/\t/\r\n/g' > "$subtitlename.srt"`
      `rm "$subtitlename.srt.tmp"`
      `chmod g+rw "$subtitlename.srt"`
    else
      # Not our desired language: add a number to the filename and keep anyway, just in case
      `mv "$subtitlename.srt.tmp" "$subtitlename.$tracknumber.srt" > /dev/null 2>&1`
    fi
  done
done

এই স্ক্রিপ্টটি নামওয়ানওয়ান্ট.শ সংরক্ষণ করুন এবং এটি সম্পাদনযোগ্য করুন

এখন টার্মিনাল ডিরেক্টরিতে স্ক্রিপ্ট ফোল্ডারে পরিবর্তন করুন এবং লিখুন ./nameyouwant.sh /pathtosave


আশ্চর্যের বিষয়, এটি একটি ভিডিওর জন্য কাজ করেনি তবে স্বীকৃত উত্তরে প্রদত্ত আদেশগুলি কার্যকর করে এটি কাজ করেছে।
হুনসু

নিফটি স্ক্রিপ্ট জন্য ধন্যবাদ। আপনি সাবটাইটেলগুলির শেষে ক্রেডিটগুলি সরিয়ে কেন আপনি একটি ব্যাখ্যা যুক্ত করতে পারেন? স্ক্রিপ্টের সেই অংশটি আমার পক্ষে কাজ করে না এবং খালি এসআরটি ফাইলের ফলাফল দেয়।
m000

1
এই উত্তরটি computernerdfromhell.com থেকে নেওয়া হয়েছে বলে মনে হচ্ছে । ক্রেডিটগুলি অপসারণের জন্য যে কারণটি দেওয়া হয়েছে তা হ'ল: "ডাচ সাবটাইটেলারের সাবটাইটেলগুলির শেষ কয়েকটি লাইনে ক্রেডিট দেওয়ার বা চিৎকার করার অভ্যাস রয়েছে that ফিল্মটি হতে পারে ফিল্মটি আরও 5 মিনিটের জন্য চলতে পারে, আমি চাই না যে ডনডলব্রেন বুগারগজলারকে চেঁচিয়ে উঠল, তাই আমি তাদের অন্য একটি সরল রেজেক্স দিয়ে মুছে ফেললাম "
ডারার এস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.