ffmpeg ऑडियो जोड़ें, लेकिन वीडियो की लंबाई समान रखें (नॉट-स्टोर)


12

मैं ffmpeg का उपयोग करके एक वीडियो फ़ाइल में ऑडियो जोड़ रहा हूँ

ffmpeg -i videofile.mp4 -i audiofile.wav output.mp4

हालाँकि यह आउटपुट वीडियो फ़ाइल को ऑडियो फ़ाइल की लंबाई तक बढ़ाता है यदि वह वीडियो से अधिक लंबी हो। यदि ऑडियो फ़ाइल वीडियो की तुलना में छोटी है, तो वीडियो फ़ाइल का उपयोग कम हो जाता है। तो क्या आउटपुट वीडियो की लंबाई को इनपुट वीडियो की लंबाई तक रखने के लिए ffmpeg को बताने के लिए कोई ध्वज है?


कृपया एक सही उत्तर चुनें। केवल वास्तविक सही एक @Zurechtweiser द्वारा एक है।
Roel Van de Paar

जवाबों:


13

मेरा मानना ​​है कि यदि आप वीडियो लंबा है तो अंत में अपने ऑडियो को शांत करने के लिए -filter_complex विकल्प और एपीड फ़िल्टर विकल्प का उपयोग करके अपने इच्छित लक्ष्य को प्राप्त कर सकते हैं। आपकी आज्ञा होगी:

ffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -shortest output.mp4

यह मानता है कि आप जो ऑडियो चाहते हैं, वह audiofile.wav की पहली स्ट्रीम में है, [A: B] सिंटैक्स A'th इनपुट से B'th स्ट्रीम लेने के लिए कहता है (दोनों 0 से शुरू होते हैं, इसलिए [1: 0] है) 2 इनपुट से पहली धारा, या ऊपर audiofile.wav)।

विवरण: https://www.ffmpeg.org/ffmpeg-filters.html#Examples-68 पर


आपको यह उल्लेख करना चाहिए, कि -filter_complexविकल्प ffmpeg -i videofile.mp4 -i audiofile.wav -c:v copy output.mp4फिर से ffmpeg -i videofile.mp4 -i audiofile.wav -filter_complex " [1:0] apad " -c:v copy -shortest output.mp4
लोड

यह अनुरोध के विपरीत उत्तर है। ओपी वीडियो को समाप्त करने के लिए कहता है जब ऑडियो समाप्त होता है, तो दिए गए जवाब में ऑडियो चुप्पी जोड़ना है यदि ऑडियो छोटा है तो वीडियो। यह उत्तर गलत है।
Roel Van de Paar

यह ओपी ने जो अनुरोध किया है, वह उसके विपरीत नहीं है। ओपी चाहता है कि आउटपुट वीडियो ऑडियो ट्रैक की लंबाई की परवाह किए बिना इनपुट वीडियो की लंबाई हो। मेरा जवाब उस परिस्थिति को संबोधित करता है जहां इनपुट वीडियो ऑडियो फ़ाइल से अधिक लंबा है। ओपी के पास पहले से ही एक समाधान होता है जब इनपुट वीडियो ऑडियो फ़ाइल से छोटा होता है, जो कि -shortest का उपयोग करना है।
डेडकोड

12
  • यदि वीडियो की लंबाई ऑडियो की लंबाई से कम -shortestहै, तो आप क्या चाहते हैं।
  • यदि वीडियो की लंबाई ऑडियो की लंबाई से अधिक है, तो कोई भी ध्वज वह नहीं होगा जो आप चाहते हैं।

इस निर्णय को स्वचालित करने के लिए कोई ध्वज नहीं है।

संपादित करें

@ डेडकोड ​​के उत्तर से प्रेरित होकर, मुझे स्पष्ट करने की आवश्यकता है, कि "कोई ध्वज को स्वचालित करने के लिए" निश्चित रूप से सच नहीं है, यदि आप पुन : लोड करने के लिए तैयार हैं : इस मामले apadमें @deadcode द्वारा सुझाए गए अनुसार जाएं।

यदि फिर भी आप -c:v copyउत्तर देने से बचना चाहते हैं (यानी ) तो उत्तर खड़ा है।

ffconcatडिमॉक्सर का उपयोग करके एक वर्कअराउंड है , लेकिन इसके लिए थोड़ा काम करने की आवश्यकता है:

  • अपने ऑडीओफ़ाइल ("साइलेंस.वॅव") के रूप में बिल्कुल उसी प्रारूप में एक फ़ाइल बनाएं जिसमें मौन हो
  • एक कॉनैट फ़ाइल बनाएं "audio.ffconcat" (उतने ही मौन रेखाओं के साथ, जहां आपको यह सुनिश्चित करने की आवश्यकता है कि आपका ऑडियो पर्याप्त है:)

file 'audiofile.wav'
file 'silence.wav'
file 'silence.wav'
...
file 'silence.wav'
  • Daud ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4

यह apadफ़िल्टर ग्राफ़ के बिना फ़िल्टर को संश्लेषित करेगा , इस प्रकार बिना पुनर्संरचना के बिना एक मक्स की अनुमति देगा।


@RoelVandePAR जैसा कि मैंने कहा: यदि वीडियो की लंबाई ऑडियो लंबाई के उपयोग से कम है -shortest, तो इस वर्कअराउंड का उपयोग करें यदि आप बिना रेनोडिंग के मौन जोड़ना चाहते हैं।
यूजेन रीक

सही है, कि समीक्षा पर याद किया। हटाए गए इनपुट बेझिझक ऐसा ही करें।
रोएल वान डे पार

6

यदि आप अपनी वीडियो-फ़ाइल की लंबाई जानते हैं, तो आप इसका उपयोग करके पूरा कर सकते हैं

ffmpeg -i videofile.mp4 -i audiofile.wav -t 43 output.mp4

जहां 43 सेकंड में आपकी वीडियो-फाइल की लंबाई है।


लेखक प्रश्न ऑडियो फ़ाइल को लूप करना चाहता है जबकि वीडियो समाप्त नहीं हुआ है। क्या उसके लिए यह काम करता है?
राफेल सेंचुरीज़

@ RafaelSanches नहीं, वह नहीं करता है।
ज़्यूरचेव्वाइज़र

लेखक ऑडियो को लूप नहीं करना चाहता। यह उत्तर भी एकमात्र सही है जो वही करता है जो ओपी पूछ रहा था; इनपुट वीडियो के समाप्त होने पर वीडियो को समाप्त करें।
Roel Van de Paar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.