FFmpeg के माध्यम से ऑडियो में 1 सेकंड का मौन जोड़ें


14

मेरे पास एक AC3 5.1 ऑडियो फ़ाइल है जिसमें मैं शुरुआत में x सेकंड का मौन ऑडियो सम्मिलित करना चाहूंगा। यह वीडियो muxing के साथ कोई लेना-देना नहीं है, इसलिए इसका अनधिकृत उपयोग बेकार है क्योंकि यह केवल एक वीडियो के साथ ऑडियो स्ट्रीम के साथ काम करता है। मैं इसे ffmpeg के साथ हासिल करना चाहूंगा। कोई विचार?


ffmpeg उसी कोडेक्स समान रेट चीजों को जोड़ देगा या जोड़ देगा?
Psycogeek

मुझे लगता है ... @Pycogeek
Makaveli84

और क्या यह ठीक उसी कोडेक दर और चैनल की मूक ऑडियो फ़ाइल बनाने में सक्षम है? ffmpeg.org/ffmpeg-filters.html#Examples-34 ? स्वयं मैं जीयूआई विधियों का उपयोग करता हूं, लेकिन यह करना कि आपका पूछना काफी आसान और बहुत तेज होना चाहिए, जब तक कि पैरामीटर सभी समान हैं। यहाँ वह है जहाँ इसे एक Mov में जोड़कर दिखाया जाता है। stackoverflow.com/questions/12368151/… जवाब में
Psycogeek

आप जो कुछ भी चाहते हैं उसे जोड़ने के लिए आर्दोर का उपयोग करें। यदि आप प्रभावों के साथ-साथ बछड़ा प्लगइन्स डाउनलोड करना चाहते हैं ..
डैशबोर्ड

जवाबों:


23

कॉन्कैट डिमॉक्सर का उपयोग करना (शुरुआत और / या अंत में चुप्पी जोड़ें)

यदि आप मुख्य सेगमेंट को फिर से एन्कोडिंग से बचना चाहते हैं, तो कॉनसैट डिमॉक्सर का उपयोग करें। यह विधियाँ शुरुआत या अंत (या दोनों) में चुप्पी जोड़ने के लिए काम करती हैं।

  1. मूक ऑडियो बनाने के लिए aullsrc ऑडियो स्रोत फ़िल्टर का उपयोग करें । आपको मुख्य ऑडियो फ़ाइल के प्रारूप, चैनल लेआउट और नमूना दर का मिलान करना होगा। एक 5.1 चैनल बनाने के लिए उदाहरण, 48000 हर्ट्ज नमूना दर, 1 सेकंड मूक AC3 ऑडियो फ़ाइल (जैसा कि यह था सवाल में प्रारूप:

    ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 1 silence.ac3
    
  2. अब एक टेक्स्ट फ़ाइल बनाएं जिसका नाम input.txtउन फ़ाइलों को सूचीबद्ध करता है जिन्हें संक्षिप्त किया जाना है:

    file 'silent.ac3'
    file 'main.ac3'
    

    यदि आप अंत में मौन चाहते हैं तो इसके बजाय फाइलों के क्रम को बदल दें input.txt

  3. अब आप कॉनकैट डिमास्टर का उपयोग करके फाइलों को समाप्‍त कर सकते हैं :

    ffmpeg -f concat -i input.txt -codec copy output.ac3
    

समवर्ती फिल्टर का उपयोग करना (शुरुआत और / या अंत में मौन जोड़ें)

यदि आप एक कमांड में सब कुछ करना चाहते हैं, या यदि आप इनपुट से भिन्न प्रारूप में आउटपुट करना चाहते हैं (क्योंकि यह विधि फिर से एनकोड करती है) तो कॉनसैट फिल्टर का उपयोग करें। यह विधियाँ शुरुआत या अंत या दोनों में चुप्पी जोड़ने के लिए काम करती हैं।

एक स्टीरियो की शुरुआत में 1 सेकंड का मौन जोड़ने के लिए उदाहरण, 44100 हर्ट्ज नमूना दर इनपुट:

ffmpeg -f lavfi -t 1 -i anullsrc=channel_layout=stereo:sample_rate=44100 -i audio.oga -filter_complex "[0:a][1:a]concat=n=2:v=0:a=1" output.m4a
  • फ़िल्टरिंग के परिणामस्वरूप पुन: एन्कोडिंग होगी, जबकि कॉनकैट डिमॉक्सर नहीं होगा।

  • Aullsrc में यह चैनल लेआउट और इनपुट की नमूना दर से मेल खाने के लिए अनुशंसित है।

  • यदि आप अंत तक मौन जोड़ना चाहते हैं, तो बस कॉनैट फिल्टर को दिए गए इनपुट के क्रम को स्विच करें [1:a][0:a]concat=n=2:v=0:a=1:।


एडेल फ़िल्टर का उपयोग करना (शुरुआत में मौन जोड़ें)

एडेल का उपयोग करेंयदि आप एक कमांड में सब कुछ करना चाहते हैं, या यदि आप इनपुट से भिन्न प्रारूप में आउटपुट करना चाहते हैं (तो इस विधि के फिर से एनकोड करने के बाद) ऑडियो फ़िल्टर का । यह केवल फ़ाइल की शुरुआत में मौन जोड़ने के लिए काम करता है।

यह उदाहरण एक स्टीरियो इनपुट की शुरुआत में 1 सेकंड का मौन जोड़ देगा:

ffmpeg -i input.flac -af "adelay=1000|1000" output.opus
  • फ़िल्टरिंग के परिणामस्वरूप पुन: एन्कोडिंग होगी, जबकि कॉनकैट डिमॉक्सर नहीं होगा।
  • मान मिलीसेकंड में है। हाल के संस्करणों (वर्तमान गिट मास्टर या एफएफएमईजी 4.1 की तुलना में कुछ भी नया) के उपयोगकर्ता इसके बजाय 1sएक सेकंड के लिए उपयोग कर सकते हैं ।
  • प्रत्येक चैनल को अपनी देरी की आवश्यकता है। उदाहरण के लिए, एक मोनो इनपुट का उपयोग होगा adelay=1000, जबकि एक 5.1 इनपुट का उपयोग करेगा adelay=1000|1000|1000|1000|1000|1000

एपीड फ़िल्टर का उपयोग करना (अंत में मौन जोड़ें)

एपद का प्रयोग करेंयदि आप एक कमांड में सब कुछ करना चाहते हैं, या यदि आप इनपुट से भिन्न प्रारूप में आउटपुट करना चाहते हैं (इस विधि के बाद से फिर से एनकोड करता है) तो ऑडियो फ़िल्टर का । यह केवल फ़ाइल के अंत में चुप्पी जोड़ने के लिए काम करता है।

यह उदाहरण मौन के 1 सेकंड को अंत तक जोड़ेगा:

ffmpeg -i input.wav -af "apad=pad_dur=1" output.m4a
  • फ़िल्टरिंग के परिणामस्वरूप पुन: एन्कोडिंग होगी, जबकि कॉनकैट डिमॉक्सर नहीं होगा।

  • pad_durविकल्प, FFmpeg 4.1 के रिलीज के बाद जोड़ा गया है ताकि आप Git मास्टर शाखा से एक हाल ही में निर्माण का उपयोग करें या FFmpeg 4.2 के लिए प्रतीक्षा करने की आवश्यकता होगी।


5
[Parsed_aevalsrc_0 @ 000000000195fec0] This syntax is deprecated. Use '|' to sep arate the list items.न्यू सिंटैक्स है-i "aevalsrc=0|0|0|0|0|0:d=1"
स्टीवन पेनी

क्या मैं एक साथ कई फ़ाइलों के लिए ऐसा कर सकता हूँ?
आरोन फ्रेंके

@AaronFranke हां, लेकिन ffmpeg में इस तरह की सुविधा नहीं है। कमांड को लूप करने के लिए आपको अपने शेल या स्क्रिप्टिंग भाषा का उपयोग करना होगा। आपका OS अज्ञात है इसलिए मैं आपको टर्नकी समाधान नहीं दे सकता, लेकिन देखें कि आप पूरी निर्देशिका को ffmpeg के साथ कैसे परिवर्तित करते हैं? कुछ सामान्य जानकारी के लिए (स्वीकृत उत्तर को छोड़ दें क्योंकि यह अनावश्यक रूप से जटिल और अक्षम है)।
17

adelayallदेरी करने के लिए उपयोगी विकल्प भी है (शुरुआत से पैड) सभी चैनलों को कुछ राशि द्वारा जैसेadelay=delays=1000:all=1
जरीज कोवज़ेल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.