Ffmpeg का उपयोग करके वीडियो से उपशीर्षक कैसे निकालें?


34

मैं वीडियो से .srtफ़ाइल के रूप में उपशीर्षक निकालने का प्रयास कर रहा हूं, मैंने निम्नलिखित कमांड का उपयोग किया है:

FFMPEG -i mytestmovie.mkv -vn -an -codec:s:0.1 srt sub.srt

लेकिन, मुझे गैर-मान्यता प्राप्त विकल्प के रूप में एक त्रुटि मिली codec:s:0:1 , तो क्या आप मुझे सटीक कमांड बता सकते हैं और .srtवीडियो में फ़ाइल के रूप में एक उपशीर्षक कैसे निकाल सकते हैं ?


उमर: क्या आप मुझे कमांड प्रॉम्प्ट में बताएंगे
vijay

मेरी भी यही समस्या है। क्या आपको यह अंततः काम करने के लिए मिला?
मैक्सिमे लेबेल

जवाबों:


51

सरल:

ffmpeg -i Movie.mkv -map 0:s:0 subs.srt
  • -i : इनपुट फ़ाइल URL / पथ।
  • -मैप : आउटपुट फ़ाइल के स्रोत के रूप में एक या अधिक इनपुट स्ट्रीम निर्दिष्ट करें।
  • s: 0 : उपशीर्षक धारा का चयन करें।

2
यह मेरे लिए एम्बेडेड उपशीर्षक के साथ एक MP4 फ़ाइल के साथ काम किया।
रुबेंस मरिज़ो

11
यह पहला उपशीर्षक ट्रैक डाउनलोड करेगा। यदि कई हैं, 0:s:1तो दूसरे 0:s:2को डाउनलोड करने के लिए, तीसरे को डाउनलोड करने के लिए, और इसी तरह का उपयोग करें।
फेबियन सन्नुअर्ट 19

5
@ jm3 क्या आप किसी भी तरह से सभी उपशीर्षक उपशीर्षक स्वचालित रूप से एक फ़ाइल से निकालने के लिए जानेंगे, उनका नामकरण उनकी भाषा पहचानकर्ता (उदाहरण के लिए, संलग्न, स्वतंत्र, dut आदि) के बाद होगा?
Fr.

बड़े MKV कंटेनर (~ 4 gb) से निकालते समय यह इतना धीमा क्यों है?
user25

एक बार में अधिक उपशीर्षक निकालने के -mapलिए आपको प्रत्येक फ़ाइल के मापदंडों को डुप्लिकेट करना होगा । यह भी शामिल -c copyहै कि यह सिर्फ यह प्रक्रिया करने की कोशिश किए बिना फ़ाइल निकालता है ffmpeg -i Movie.mkv -c copy -map 0:s:0 subs.01.srt -c copy -map 0:s:1 subs.02.srt:। वैसे भी इसमें लंबा समय लगेगा क्योंकि सबटाइटल धाराओं के सभी हिस्सों को खोजने के लिए ffmpeg को पूरी वीडियो फाइल अवश्य पढ़नी चाहिए।
राडेक पीच

8

-codec:s:0:1गलत है। यदि आप उपयोग करते हैं -codec:s:0तो ffmpeg आउटपुट के लिए दिए जा रहे पहले सबटाइटल स्ट्रीम के लिए बताए गए कोडेक का उपयोग करेगा, यदि आप उपयोग करते हैं -codec:s:1तो यह दूसरी उपशीर्षक स्ट्रीम के लिए उपयोग करेगा, आदि।

आप सभी आउटपुट उपशीर्षक धाराओं का चयन करने के लिए या तीसरी आउटपुट स्ट्रीम -codec:sका चयन करने के लिए भी उपयोग कर सकते हैं , चाहे जो भी हो।-codec:2

आप शायद भ्रमित हैं क्योंकि -mapविकल्प एक अलग तरीके से व्यवहार करता है - वहां, आपको यह चुनना होगा कि चयनित स्ट्रीम से कौन सा इनपुट आता है। (इसलिए, -map 0:s:0पहले इनपुट से पहली उपशीर्षक स्ट्रीम लेगा, और इसे आउटपुट में फीड करेगा)। हालाँकि, -mapयह चुनने के लिए कि आप किन धाराओं से इनपुट लेना चाहते हैं; जबकि अन्य विकल्प जो स्ट्रीम मैपिंग का उपयोग करते हैं, उनमें से अधिकांश का चयन करने के बाद स्ट्रीम पर उपयोग के लिए होता है (इसलिए यह निर्दिष्ट करने की कोई आवश्यकता नहीं है कि वे किस इनपुट फ़ाइल से हैं), क्योंकि वे आउटपुट में उत्तीर्ण हैं।


evilsoup: मैं निम्नलिखित कमांड का उपयोग करूंगा E: \ FFMpeg_Latest> ffmpeg -i E: \ Routine \ routine.mkv -van -an -map 0: s: 0 srt E: \ Routine's sub.srt, यह मुझे एक त्रुटि लगता है 'srt' के लिए एक उपयुक्त आउटपुट फॉर्मेट प्राप्त करने में असमर्थ, क्या आप मुझे वीडियो में एक उपशीर्षक निकालने के लिए कमांड बता सकते हैं ...
vijay

2
आज़माएँ: ffmpeg -i E:\Routine\routine.mkv -map 0:s:0 E:\Routine\sub.srt(ffmpeg का पता लगाना चाहिए कि आप आउटपुट फ़ाइल नाम से srt उपशीर्षक चाहते हैं)
evilsoup

मैंने उपयोग किया: ffmpeg -i film.mp4 -vn -an -codec:s srt film.srtजिसे सब उपशीर्षक को srt फ़ाइल में कॉपी करना चाहिए।
स्टुअर्ट

@ इसे सभी उपशीर्षक न निकालें
user25

1
@evilsoup -codec:sबराबर है -codec:s:0इसलिए यह सभी सबटाइटल का चयन नहीं करता है ... यह पहला टेक्स्ट ट्रैक
निकालेगा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.