2013-02-24 84 views
6

का उपयोग कर सभी स्ट्रीम जोड़ें, मैं एमकेवी को किसी दिए गए निर्देशिका में सभी वीडियो फ़ाइलों को रीमक्स करने के लिए एफएफएमपीईजी को स्वचालित करने की कोशिश कर रहा हूं। मैं वर्तमान मेंएमकेवी के लिए रीमक्स लेकिन एफएफएमपीई

ffmpeg -i $INPUT -c copy $OUTPUT.mkv 

उपयोग कर रहा हूँ हालांकि, कुछ धाराओं कि जिस तरह से छोड़ दिया जाता है - उदाहरण के लिए, अगर वहाँ 2 ऑडियो धाराओं केवल 1 आउटपुट फ़ाइल के लिए चला जाता है।

मैं कैसे निर्दिष्ट करूं कि सभी इनपुट से धाराओं को आउटपुट में कॉपी किया जाना चाहिए?

जब से मैं FFmpeg स्वचालित करने के लिए कोशिश कर रहा हूँ, यह सबसे अच्छा होगा अगर आदेश, प्रत्येक फ़ाइल के लिए परिवर्तन नहीं करता है अर्थात मैन्युअल -map के साथ सभी धाराओं को निर्दिष्ट मुझे आवश्यकता पहले हर फ़ाइल को पार्स करने होगा। अगर मुझे ज़रूरत है तो मैं ऐसा करूँगा, लेकिन अगर कोई बेहतर समाधान है तो मैं इसे पसंद करूंगा।

+0

[अपनी मेटा चर्चा] पर समझौते के अनुसार (http://meta.stackexchange.com/q/168740/159624), यह प्रश्न सुपर उपयोगकर्ता को जाना चाहिए था। मैंने माइग्रेट करने के लिए मतदान किया। – slhck

+0

http://meta.stackexchange.com/a/168743/170007 - * FFmpeg.exe का उपयोग करके अनुप्रयोगों का विकास करना और स्क्रिप्ट लिखना, इसके उपयोग को स्वचालित करने के लिए → दोनों के लिए विषय पर, लेकिन एसयू * के लिए अधिक विषय। मैं ffmpeg को स्वचालित करने की कोशिश कर रहा हूं, इसलिए यह यहाँ परोपकारी है, है ना? ओह, और उत्तर के लिए धन्यवाद :) – sashoalm

+0

जैसा आपको पसंद है-मुझे लगता है कि यह सीमा रेखा है क्योंकि प्रोग्रामिंग भाषा शामिल नहीं है, और यदि यह '$ INPUT' या' input.mp4' वास्तव में कोई फर्क नहीं पड़ता है। यह सिर्फ इतना है कि मैंने इन सवालों में से कई प्रश्न गलत कारणों से यहां बंद कर दिए हैं, इसलिए उन्हें किसी बिंदु पर हटाए जाने से पहले माइग्रेट कर दिया गया है :) आपका स्वागत है। – slhck

उत्तर

15

मैं कैसे निर्दिष्ट करूं कि इनपुट से सभी धाराओं को आउटपुट में कॉपी किया जाना चाहिए?

-map विकल्प शॉर्टकट -map 0 के साथ ऐसा कर सकते हैं।

उदाहरण के लिए: output.mkv को 2:

ffmpeg -i input.mkv -c copy -map 0:0 -map 0:2 output.mkv 

धारा कॉपी करने के लिए 0: 0 और 0।

ffmpeg -i input.mkv -c copy -map 0 output.mkv 

कॉपी करने के लिए सभी इनपुट इनपुट 0 (input.mkv) उत्पादन के लिए से धाराओं (भले ही एक से अधिक वीडियो, ऑडियो या उपशीर्षक धाराओं कर रहे हैं)।

-map मूल्य इनपुट संख्या से मेल खाती है (0 पहला इनपुट है, 1 दूसरे इनपुट, आदि है): आप एक अतिरिक्त इनपुट जोड़ते हैं (-> इनपुट 1), और भी सारी सामग्री को कॉपी करना चाहते हैं , तो आपको -map 1 जोड़ने की आवश्यकता होगी।

आप फ़ाइलों का विश्लेषण करने के लिए ffprobe का उपयोग कर सकते हैं और देख सकते हैं कि कौन सी स्ट्रीम मैप की गई है। त्रुटि प्राप्त करने पर -fflags +genpts आज़माएं। विस्तृत ट्यूटोरियल के लिए, the FFmpeg Wiki page on the -map option देखें।

+5

और यदि आपको त्रुटि मिलती है 'अज्ञात टाइमस्टैम्प के साथ पैकेट नहीं लिख सकता' तो आपको ffmpeg कमांड के बाद '-फ्लैग + जेनप्ट्स' जोड़ना होगा। [यह बग] देखें (https://trac.ffmpeg.org/ticket/1979) और यहां वर्णित कार्यवाही http://askubuntu.com/a/413968/135671 – erik

+0

यदि किसी को यह उत्तर मिल जाए लेकिन वह नहीं मिल पा रहा है 'ffmpeg'; 'ffmpeg' अब उबंटू 14.04 रिपॉजिटरीज़ में मौजूद नहीं है, लेकिन इसका कांटा' avconv' वही करता है ('sudo apt-get libav-tools इंस्टॉल करें)। – JeroenHoek

+0

@JeroenHoek इसके अतिरिक्त, ffmpeg बिल्ड http://ffmpeg.org/download से डाउनलोड किया जा सकता है।एचटीएमएल – slhck