जवाबों:
ffmpeg में एक subtitles
फ़िल्टर होता है जो SRT फ़ाइलों को वीडियो स्ट्रीम में जला सकता है। तुम ffmpeg की जरूरत है, --enable-libass
हालांकि संकलित । मुझे नहीं लगता कि लिबाव में कुछ ऐसा ही है, कम से कम उपलब्ध फिल्टरों को देखते हुए ।
आपको सबसे पहले सबटाइटल निकालने की जरूरत है। -map 0:s:0
आउटपुट के लिए पहली उपशीर्षक स्ट्रीम -c:s:0
का चयन करता है , और इसके लिए कोडेक का चयन करता है - बस यह सुनिश्चित करने के लिए कि यह वास्तव में SRT है।
ffmpeg -i input.mkv -an -vn -map 0:s:0 -c:s:0 srt subtitles.srt
फिर, उन्हें अंदर जला दें।
ffmpeg -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 \
-c:a mp2 -ac 2 -b:a 128k -filter:v subtitles=subtitles.srt output.mpg
ध्यान दें:
उपरोक्त कमांड मान रहा है कि स्ट्रीम 0:0
और 0:1
आपके इनपुट में क्रमशः वीडियो और ऑडियो स्ट्रीम हैं। यदि आप केवल उपशीर्षक को आउटपुट फ़ाइल में शामिल होने से रोकना चाहते हैं, तो आप -sn
उन्हें पूरी तरह से अक्षम करने के लिए भी जोड़ सकते हैं।
आपको बदलना -ab
होगा -b:a
, क्योंकि पूर्व ffmpeg के लिए एक गैर-मौजूदा विकल्प है।
यदि आपके इनपुट में HDMV PG की तरह छवि-आधारित उपशीर्षक है (लगता है MakeMKV उन्हें बना रहा है, और अन्य उपकरण उन्हें निकालने में असमर्थ हैं), तो आप उन्हें जलाने के लिए ओवरले फिल्टर का उपयोग करने का प्रयास कर सकते हैं:
ffmpeg -i input.mkv -filter_complex "[0:v][0:s]overlay[v]" -map [v] -map 0:a \
-target pal-dvd -aspect 16:9 -q:v 1 -c:a mp2 -ac 2 -b:a 128k output.mpg
यह FFmpeg Wiki पर भी समझाया गया है ।
यदि आपका उपशीर्षक मूल फिल्म की तुलना में विभिन्न आयामों में आता है (उदाहरण के लिए क्योंकि वीडियो स्ट्रीम को छोटा कर दिया गया था, लेकिन उपशीर्षक नहीं थे), तो आप आकार सेट करने के लिए -canvas_size
विकल्प का उपयोग करने का प्रयास कर सकते हैं ।
"[0:s]scale=-1:720[subs];[0:v][subs]overlay[v]"
या कुछ और। मैं अभी इसका परीक्षण नहीं कर सकता, लेकिन ऐसा कुछ काम करना चाहिए।