ffmpeg - एक चैनल के लिए कई ऑडियो मैपिंग


0

मैं एक वीडियो फ़ाइल को कई ध्वनियों के साथ आउटपुट करना चाहता हूं, लेकिन उन्हें एक चैनल में डाल देता हूं।
मैंने इसे करने के लिए कुछ तरीके आजमाए हैं, लेकिन मुझे हमेशा कई साउंड स्ट्रीम वाला वीडियो दिया जाता है।
ऐशे ही

मेरी आज्ञा है

ffmpeg -r 30 -i test_%03d.png 
-itsoffset 10 -ss 5 -t 20 -i s01.wav
-itsoffset 15 -ss 10 -t 30 -i s02.wav 
-map 0:v -map 1:a:0 -map 2:a:0 -c:v libopenh264 -c:a mp3 test.mp4

नई कमान परीक्षण

-framerate 30 -i test_%03d.png -ss 0.2 -t 1 -i sound01.wav -ss 1 -t 2 -i sound02.wav
-filter_complex
"[1] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [a1];
 [2] aformat=sample_fmts=s16p:sample_rates=44100:channel_layouts=mono [a2]; 
 [a1]adelay=400|400,apad[b1]; 
 [a2]adelay=900|900[b2]; 
 [b1][b2]amerge=2[a]" 
 -map 0:v -map "[a]" -c:v libopenh264 -c:a mp3 -ac 2 output.mp4

चूँकि फ़िल्टर अपने प्रारूप में त्रुटि नहीं चुन सके , इसलिए मैंने कमांड में aformat जोड़ा। लेकिन अब एक और त्रुटि हो रही है, इनपुट 1 और आउटपुट वीडियो के लिए कोई चैनल लेआउट sound01 का अभाव है, कृपया मेरी मदद करें!


यह Channel_layouts = ** मोनो ** को स्टीरियो में बदलने के बाद काम करता है , लेकिन मुझे अभी भी इनपुट 1 त्रुटि के लिए कोई चैनल लेआउट नहीं दिया गया है ।
Ives

जवाबों:


0

एक में कई ऑडियो स्ट्रीम को संयोजित करने के लिए, आपको स्ट्रीम को मर्ज करने के लिए फ़िल्टर का उपयोग करना होगा:

ffmpeg -framerate 30 -i test_%03d.png -i s01.wav -i s02.wav \
       -filter_complex "[1][2]amerge=2[a]" \
       -map 0:v -map "[a]"   
       -c:v libopenh264 -c:a mp3 -ac 2 test.mp4

framerateछवि और कच्चे धाराओं के लिए सही विकल्प है।

-ac 2Downmixes 2 चैनलों के लिए मर्ज किए गए ऑडियो के बाद से है कि एमपी 3 एनकोडर के लिए ऊपरी सीमा है।


अद्यतन कमांड के लिए,

ffmpeg -framerate 30 -i test_%03d.png 
       -ss 5 -t 20 -i s01.wav
       -ss 10 -t 30 -i s02.wav
       -filter_complex "[1]adelay=10000|10000,apad[a1];
                        [2]adelay=15000|15000[a2];
                        [a1][a2]amerge=2[a]" \
       -map 0:v -map "[a]" -c:v libopenh264 -c:a mp3 test.mp4

adelayपैड सामने ऑडियो, और प्रति चैनल मिलीसेकेंड में मूल्य लेता है। apadअंत में पैड ऑडियो, और जरूरत है क्योंकि amerge कम से कम धारा के साथ समाप्त होता है।


धन्यवाद, यह स्ट्रीम को मर्ज करता है, अगर मैं अधिक ऑडियोज को मर्ज करना चाहता हूं तो क्या मैं -filter_complex को बदल सकता हूं "[1] [2] [3] [4] amerge = 4 [a] ?
Ives

और मैंने पाया कि अगर मैं स्ट्रीम को मिला देता हूं तो व्यक्तिगत सेटिंग्स जैसे -itsoffset -ss -t को नजरअंदाज कर दिया जाएगा।
Ives

क्या मैं सिर्फ बदल सकता हूँ -filter_complex "[1] [2] [३] [४] आमेर = [[एक]? -> हाँ।
ज्ञान

हां, उन पर ध्यान नहीं दिया जाएगा और आमार सबसे छोटी धारा के साथ समाप्त हो जाएगा, इसलिए आपको उन्हें पहले ही ट्रिम कर देना चाहिए।
ज्ञान

इसलिए मूल रूप से मैं इसे एक पंक्ति कमांड में नहीं कर सकता, मुझे उन्हें ट्रिम करने और वीडियो अवधि के बराबर ध्वनि फ़ाइलों की अवधि बनाने की आवश्यकता है, फिर उन्हें वीडियो में मर्ज करें?
Ives
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.