ffmpeg स्टीरियो चैनल दो मोनो चैनल में


11

मैं जानना चाहता था कि क्या दो मोनो wav फ़ाइलों में स्टीरियो को विभाजित करने का एक तरीका है। मेरा पहला अनुमान था

ffmpeg -threads "16" -i "$2" -map 0:1:1 "$3"

क्योंकि मेरे उदाहरण वीडियो में निम्नलिखित सूचना है:

Audio
ID                                       : 2
Format                                   : AAC
Format/Info                              : Advanced Audio Codec
Format profile                           : LC
Codec ID                                 : 40
Duration                                 : 39mn 0s
Bit rate mode                            : Constant
Bit rate                                 : 256 Kbps
Channel(s)                               : 2 channels
Channel positions                        : Front: L R

इसलिए मेरे पास दो चैनलों के साथ यह एक ऑडियो स्ट्रीम है और दो मोनो चैनल चाहिए। पहले तो मैंने इसे map_channel के साथ आज़माया, लेकिन इसने वह चाल नहीं चली जिसके बजाय मुझे एक त्रुटि संदेश मिल रहा था:

Syntax error, mapchan usage: [file.stream.channel|-1][:syncfile:syncstream]

इसलिए मैंने इसे ऊपर दिए गए कोड के साथ फिर से आज़माया है और कम से कम ffmpeg ने कुछ किया है, लेकिन नतीजा वह नहीं है जिसकी मुझे उम्मीद थी, बल्कि इसे दो मोनो wav फ़ाइलों में तोड़ने के बजाय, परिणाम था:

info.system.container = WAVE
info.system.size = 449413166 Bytes
info.system.size = 428.59 MiB
info.system.playtime = 2340.69 s
info.audio0.codec = PCM
info.audio0.desc = 
info.audio0.format_endianness = Little
info.audio0.format_sign = Signed
info.audio0.format_resolution = 16 bits
info.audio0.samprate = 48000 Hz
info.audio0.channels = 2

फिर से दो ऑडियो चैनलों के साथ, तो मैं कहां गलत था?

जवाबों:


17

Ffmpeg का उपयोग करने के कई तरीके हैं जो मुझे स्टीरियो से दो अलग-अलग मोनो फ़ाइलों या एक फाइल में दो मोनो धाराओं के बारे में पता हैं:

2 मोनो आउटपुट के लिए स्टीरियो

2 मोनो आउटपुट के लिए स्टीरियो

-map_channel विकल्प

ffmpeg -i stereo.wav -map_channel 0.0.0 left.wav -map_channel 0.0.1 right.wav

pan ऑडियो फ़िल्टर

ffmpeg -i stereo.wav -filter_complex \
"[0:0]pan=1|c0=c0[left]; \
 [0:0]pan=1|c0=c1[right]" \
-map "[left]" left.wav -map "[right]" right.wav

2 मोनो धाराओं के लिए स्टीरियो

channelsplit ऑडियो फ़िल्टर

2 मोनो धाराओं के लिए स्टीरियो

यह एक आउटपुट फाइल बनाएगा जिसमें दो अलग-अलग मोनो स्ट्रीम होंगे:

ffmpeg -i input.m4a -filter_complex channelsplit out.mka

और देखें


धन्यवाद, मुझे मेरा दोष मिल गया है। जब मैं उपयोग कर -map_channelरहा था तो मैंने सिंगल डॉट्स का उपयोग नहीं किया था, बल्कि मैंने डबल डॉट्स का उपयोग किया था, इसलिए यह कोई आश्चर्य नहीं है कि यह काम नहीं किया। अब यह काम कर रहा है!
सेबस्टियन

1
मान लें कि मेरे पास एक स्ट्रीम में 6 चैनलों के साथ एक फ़ाइल है, मुझे कैसे पता चलेगा कि कौन सा चैनल है? जब मेरे पास 2 चैनल होते हैं, तो यह हमेशा 0.0.0 बाएँ और 0.0.1 दाएँ होता है। मैं ffmpeg प्रलेखन में देखा है और यह कहता है, -layoutsलेकिन कोई उदाहरण नहीं है कि यह कैसे काम करता है। मैंने इसे आजमाया है और मुझे जो संदेश मिला है Missing argument for option 'layouts'वह यह है कि ffmpeg किस तर्क की उम्मीद कर रहा है?
सेबस्टियन

@sebastian आप छह चैनल इनपुट से छह मोनो आउटपुट फाइल बनाना चाहते हैं?
llogan

मेरे पास दो या तीन क्लिप हैं जिनमें 5.1 सराउंड साउंड है और निश्चित रूप से मैं उन सभी छह पर map_channel का उपयोग करने के बाद बताता हूं कि कौन सा map_channel किस स्थिति से संबंधित है, यहां एक उदाहरण है: Audio ID : 2 Channel(s) : 6 channels Channel positions : Front: L C R, Side: L R, LFEलेकिन मुझे लगता है कि मुझे पहले से ही एक समाधान मिल गया है इस समस्या के लिए।
सेबस्टियन

@sebastian आपका समाधान क्या है?
llogan

1

आपको उसके लिए चैनस्प्लिट फ़िल्टर का उपयोग करना चाहिए । -मैप ऐसा नहीं कर सकता। उदाहरण के लिए:

ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv

मेरे द्वारा प्रदान किए गए दस्तावेज़ के लिंक की जाँच करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.