MKV फ़ाइल में उपशीर्षक कैसे जोड़ें और निकालें?


28

मेरे पास एक अच्छी गुणवत्ता वाली MKV फ़ाइल है जिसमें कई उपशीर्षक विकल्प हैं। मैं सूची में एक अतिरिक्त उपशीर्षक फ़ाइल जोड़ना चाहता हूं। मैं OSX का उपयोग कर रहा हूं।

कुछ खोज ने मुझे वीडियो कन्वर्टर्स का उपयोग करने के लिए प्रेरित किया, और मूल रूप से फिल्म को एक नई फ़ाइल में फिर से एनकोड किया। यह वास्तव में मेरे लिए overkill लगता है। इसके अलावा मैं पिछले उपशीर्षक, और रास्ते में कुछ छवि गुणवत्ता को ढीला कर सकता हूं।

जवाबों:


41

उपशीर्षक हटाना:

mkvmerge -o output.mkv input.mkv -S # remove all subtitle tracks
mkvmerge -o output.mkv input.mkv -s 3,4 # remove tracks 3 and 4
mkvmerge -o output.mkv input.mkv -s '!3' # remove all subtitle tracks except 3
mkvmerge -i input.mkv # show track numbers

उपशीर्षक जोड़ना:

mkvmerge -o output.mkv input.mkv subs.srt
mkvmerge -o output.mkv input.mkv --language 0:ger --track-name 0:German subs.srt

उपशीर्षक निकालना:

mkvextract tracks input.mkv 3:subs.srt
for f in *.mkv; do
  sub=$(mkvmerge -i "$f" | awk '$4=="subtitles"{print;exit}')
  [[ $sub ]] || continue
  [[ $sub =~ S_TEXT/ASS ]] && ext=ass || ext=srt
  track=$(awk -F '[ :]' '{print $3}' <<< "$sub")
  mkvextract tracks "$f" "$track:${f%mkv}$ext"
done

mkvmerge और mkvextract के साथ स्थापित किया जा सकता है brew install mkvtoolnix


2
MKVMerge GUI पहले से ही Mac OS X पर उपलब्ध है, लेकिन फिर भी, यह कंसोल प्रशंसकों के लिए एक अच्छा तरीका है।
बोरा

ध्यान दें कि उपशीर्षक जोड़ने के लिए उपरोक्त कमांड भी उपशीर्षक को फ़ाइल द्वारा खेलते समय "डिफ़ॉल्ट रूप से सक्षम" के रूप में सेट करता है। (इस ध्वज की पुष्टि MKVMerge GUI का उपयोग करके की जा सकती है।) इससे बचने के लिए, उपयोग करें --default-track '0:0'
मैथियास ब्यनेंस

4

सबटाइटल दिखाने के दो मूल तरीके हैं। आप वीडियो में ही पिक्सल्स को एनकोड कर सकते हैं। इसे "हार्डसुबिंग" कहा जाता है। यहाँ लाभ वीडियो प्लेयर के लिए सरलता है, यह सिर्फ एक वीडियो स्ट्रीम है। नुकसान यह है कि आपको वीडियो को फिर से लोड करना पड़ा, जिसमें समय लगता है, और कुछ निष्ठा हानि होती है। यदि आपको एक बेहतर अनुवाद मिलता है, तो, यह वीडियो में पिक्सेल है। और आपके पास केवल एक भाषा हो सकती है।

जो कुछ बेहतर है वह "सोफ्ट्सबबिंग" है, जिसमें एक पाठ फ़ाइल कहीं है, जो वीडियो स्ट्रीम से अलग है। उपशीर्षक फ़ाइलों के कई अलग-अलग प्रारूप हैं, लेकिन उनके आधार पर उन सभी में "पाठ है, क्या समय शुरू करें, किस समय निकालें" उनके मूल में। कुछ में स्क्रीन पर रंग और अभिविन्यास जैसी अतिरिक्त विशेषताएं हैं। इसका लाभ यह है कि आपके पास कई भाषाएँ हो सकती हैं (डीवीडी के बारे में सोचें, आपके पास कई भाषाएँ उपलब्ध हैं) और आप फ़ाइल में टाइपोस और इस तरह से ठीक कर सकते हैं। और अगर आपको सबटाइटल्स की जरूरत नहीं है, तो आप बस उन्हें बंद कर दें।

सोफ्टबस या तो अलग-अलग फाइलें हो सकती हैं - अधिकांश खिलाड़ी मुख्य वीडियो के रूप में उसी नाम (अलग एक्सटेंशन) के साथ उपशीर्षक के लिए स्वचालित रूप से देखेंगे। या कुछ कंटेनर फ़ाइल प्रारूप (जैसे MKV) उन्हें अंदर एम्बेड कर सकते हैं। की जाँच करें MKVtoolnix (वहाँ है एक मैक बंदरगाह) MKV फ़ाइल उपकरणों के लिए। यह आपको बिना सोचे-समझे सॉफ़टस् एम्बेड करना चाहिए।

ध्यान दें कि सभी खिलाड़ी सभी प्रारूपों का समर्थन नहीं कर सकते हैं। मेरा अनुभव है कि XBMC के पास SSA फ़ाइलों के साथ समस्याएँ हैं, लेकिन SRT फ़ाइलें अधिक सरल हैं। यदि आपके प्लेटफ़ॉर्म पर समर्थित है, तो VLC कुछ भी चलाएगा।


1
अच्छा उत्तर, हालांकि यह ध्यान दिया जाना चाहिए कि कुछ सॉफ्ट-उपशीर्षक - विशेष रूप से डीवीडी उपशीर्षक - बिटमैप-आधारित होते हैं, बजाय पाठ-आधारित। जिसका मुख्य प्रभाव उन्हें संपादित करने के लिए लगभग असंभव बना देता है -_-
evilsoup

@evilsoup धन्यवाद, कि पता नहीं था।
रिच होमोलका

1
हां, IDX + SUB VOBsub , जहां IDX एक टेक्स्ट फाइल है, लेकिन SUB में बिटमैप हैं।
करण

डायरेक्ट डाउनलोड पेज का लिंक बदल दिया है।
बोरा

0

मुझे लगता है कि यह एक पुराना प्रश्न है और user495470इसका उत्तर 2013 के रूप में स्वीकार किया गया है, लेकिन चूंकि प्रश्न का कुछ हिस्सा फाइलों में उपशीर्षक जोड़ने के बारे में है, इसलिए मैं इस नए जोड़ को जोड़ना चाहता था।

मूल रूप से, मुझे .assउपशीर्षक के दर्जनों को MKV फ़ाइलों के नाम से मिलाने की आवश्यकता थी , इसलिए एक समय में यह एक कमांड करना इसे काट नहीं रहा था। इसलिए मैंने इस सरल बैश स्क्रिप्ट को मार दिया, जो वर्तमान निर्देशिका को .assफाइलों से चलाने के लिए खोजेगा और फिर उन्हें उम्मीद के मुताबिक मर्ज कर देगा।

find -E . -maxdepth 1 -type f -iregex '.*\.(ASS|SRT)$' |\
  while read FILEPATH
  do
    DIRNAME=$(dirname "${FILEPATH}");
    BASENAME=$(basename "${FILEPATH}");
    FILENAME="${BASENAME%.*}";
    EXTENSION="${BASENAME##*.}"
    mkvmerge -o "/Users/jake/${FILENAME}"-NEW.mkv "${FILENAME}".mp4 --language 0:eng --track-name 0:English "${FILENAME}"."${EXTENSION}"
  done

बेशक, यह सरल स्क्रिप्ट मानती है कि उपशीर्षक अंग्रेजी हैं और उन्हें इस तरह विलय करता है, लेकिन इसे मैन्युअल रूप से प्रति उपयोग की आवश्यकता के अनुसार समायोजित किया जा सकता है; MKV के साथ उपशीर्षक को स्वचालित रूप से मर्ज करने का बड़ा मुद्दा इस तरह एक सरल स्क्रिप्ट द्वारा हल किया गया है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.