एवन के साथ बर्न-इन सबटाइटल?


4

मेरे पास एक mkv फ़ाइल है और इसे डीवीडी संगत mpg फ़ाइल के साथ परिवर्तित करना चाहते हैं avconv। मैं उसी mkv फ़ाइल से एक-एक उपशीर्षक स्ट्रीम कैसे जला सकता हूं?

avconv -i input.mkv -map 0:0 -map 0:1 -target pal-dvd -aspect 16:9 -q:v 1 -acodec mp2 -ac 2 -ab 128k output.mpg

जवाबों:


5

पाठ-आधारित उपशीर्षक

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: 0 - शायद गलत पैरामीटर जैसे बिट_रेट, रेट, चौड़ाई या ऊंचाई"। उपशीर्षक धारा को "उपशीर्षक: hdmv_pgs_subtitle" के रूप में घोषित किया गया है। क्या आप जानते हैं कि समस्या क्या है?
user4811

धन्यवाद! मैंने भी यह कोशिश की है, लेकिन सबटाइटल दिखाई नहीं देते हैं और मुझे संदेश "सब 2वीडियो: आयत अतिप्रवाह" मिलता है। मुझे पता चला है कि समस्या यह है कि स्रोत 1080p से 720p में परिवर्तित हो गया था लेकिन उपशीर्षक अभी भी 1080p है। ओवरलेइंग से पहले उपशीर्षक स्ट्रीम को 720p तक स्केल करना संभव है?
user4811 12

हाँ, यह संभव होना चाहिए। "[0:s]scale=-1:720[subs];[0:v][subs]overlay[v]"या कुछ और। मैं अभी इसका परीक्षण नहीं कर सकता, लेकिन ऐसा कुछ काम करना चाहिए।
slhck

अरे, अभी भी "सब 2वीडियो: आयत अतिप्रवाह" और आउटपुट में कोई उपशीर्षक नहीं मिलता है। यह सही है, या? ffmpeg -i input.mkv -filter_complex "[0: s] स्केल = -1: [[उप]; [0: v] [उप] [उप] [v]" -मैप [v] -मैप 0: 0: 0 - लक्ष्य pal-dvd -aspect 16: 9 -q: v 1 -c: a mp2 -ac 2 -b: 128k output.mpg
user4811

उपशीर्षक के लिए कैनवास निर्दिष्ट करने के लिए समाधान "-canvas_size" पैरामीटर है। यह पहला पैरामीटर होना चाहिए!
15:48 बजे user4811
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.