Como mesclar dois canais de áudio em uma única saída de 2 canais

1

Estou tentando mesclar esses dois WAVs (L.wav e R.wav) em um único OGG estéreo de dois canais. É isso que estou tentando:

ffmpeg -i L.wav -i R.wav -c:a libvorbis -q:a 5 \
-filter_complex "[0:a][1:a]amerge" -f ogg out.ogg

No entanto, ffmpeg diz que:

Input channel layouts overlap: output layout will be determined by the number of distinct input channels

E isso

4.0 not supported by Vorbis: output stream will have incorrect channel layout.

Então eu entendo que só vou conseguir um áudio em apenas um canal do meu arquivo de saída. Então a questão é, como eu posso dizer ao ffmpeg para mapear o canal 0 de L.wav e o canal 0 de R.wav nos canais 0 e 1 de out.ogg (respectivamente)? algo assim:

input #0 [1.0.0.0] → [1.0.0.0] \
                                > output #0 [1.1] 
input #1 [1.0.0.0] → [0.1.0.0] /
    
por arielnmz 11.05.2015 / 08:56

1 resposta

1

Como você percebe, o filtro amerge combinou as duas entradas estéreo em uma saída de quatro canais. O layout atual de 4 canais:

  • c0 é o canal esquerdo de L.wav
  • c1 é o canal certo de L.wav
  • c2 é o canal esquerdo de R.wav
  • c3 é o canal certo de R.wav

Você pode adicionar o filtro pan para misturar os canais desejados novamente em uma saída estéreo. Até onde posso dizer, você quer que c0 seja o canal esquerdo de sua saída e c2 seja o canal certo:

ffmpeg -i L.wav -i R.wav \
-filter_complex "[0:a][1:a]amerge=inputs=2,pan=stereo|c0=c0|c1=c2[a]" \
-map "[a]" -c:a libvorbis -q:a 5 out.ogg
  • Eu geralmente adiciono explicitamente a opção input a amerge . O padrão é 2 , mas eu faço isso caso eu use mais de 2 entradas; de outra forma sendo esquecido e muitas vezes preguiçoso eu posso configurá-lo corretamente.

  • -f ogg é supérfluo neste caso, pois detectará o formato adequado usando o nome do arquivo de saída.

  • Veja FFmpeg Wiki: Manipulação de Canais de Áudio para mais exemplos.

por 11.05.2015 / 18:35

Tags