ffmpeg canais estéreo em dois canais mono

7

Eu queria saber se existe uma maneira de dividir o estéreo em dois arquivos wav mono. Meu primeiro palpite foi

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

porque o meu vídeo de exemplo tem as seguintes informações:

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

Então eu tenho esse fluxo de áudio com dois canais e quero dois canais mono. No começo eu tentei com o map_channel, mas isso não funcionou, mas eu recebi uma mensagem de erro:

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

Então eu tentei novamente com o código mencionado acima e pelo menos o ffmpeg fez alguma coisa, mas o resultado não foi o que eu esperava, em vez de dividi-lo em dois arquivos mono wav, o resultado foi:

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

novamente com dois canais de áudio, então onde foi que eu errei?

    
por sebastian 09.12.2013 / 14:48

2 respostas

11

Usando o ffmpeg, existem vários métodos que eu conheço para ir de estéreo para dois arquivos mono individuais ou dois fluxos mono em um arquivo:

estéreo para 2 saídas mono

-map_channel opção

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

pan filtro de áudio

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

estéreo para 2 fluxos mono

channelsplit filtro de áudio

Issocriaráumarquivodesaídacomdoisfluxosmonoindividuais:

ffmpeg-iinput.m4a-filter_complexchannelsplitout.mka

Vejatambém

  • Manipulando canais de áudio com o ffmpeg
por 09.12.2013 / 20:13
0

Você deve usar o filtro de canais por canal para isso. -map não pode fazer isso. Por exemplo:

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

Verifique o link para a documentação que eu forneci.

    
por 09.12.2013 / 16:57