Questão Como selecionar o canal de áudio esquerdo com ffmpeg e downmix para mono?


Eu tenho um filme antigo "estéreo" como um arquivo mp4.

O som está apenas no canal esquerdo, o canal direito está em silêncio.

Gostaria de usar o ffmpeg para copiar o fluxo de vídeo:

ffmpeg -hide_banner -i video.mp4 -c:v copy ...

e converta o áudio para mono selecionando apenas o canal esquerdo:

-map_channel 0.1.0 -map_channel -1

Mas isso não mudou nada :-(

Qual é a linha de comando correta do ffmpeg para isso?

Também é possível fazer isso sem recodificar?


2


origem




Respostas:


Existem pelo menos dois métodos para selecionar o canal de áudio esquerdo e saída como mono.

Usando -map_channel

Supondo que a entrada contenha apenas áudio:

ffmpeg -i input -map_channel 0.0.0 output
  • O primeiro número é o ID do arquivo de entrada: você só tem uma entrada para que seja 0. O segundo número é o especificador de fluxo: se o áudio é o segundo fluxo, como é frequentemente o caso em um arquivo de vídeo típico, então você usaria 1 em vez de. O terceiro número é o número do canal: em uma entrada estéreo, o primeiro canal é geralmente o Front Left, e o segundo é geralmente o Front Right.

  • Se você quiser o canal certo, use -map_channel 0.0.1.

  • Se a entrada contiver vídeo, o áudio provavelmente será (mas não sempre) listado como o segundo fluxo, portanto, será necessário usar 0.1.0 em vez de.

Usando filtro de áudio pan

ffmpeg -i input -af "pan=mono|c0=FL" output
  • Alternativamente, você poderia usar pan=mono|c0=c0.
  • Se você quiser o canal certo, use pan=mono|c0=FR (ou pan=mono|c0=c1).

Veja também


6



Oi, você disse "Supondo que a entrada contenha apenas áudio:". O problema é que meu arquivo contém vídeo e áudio :) - SebMa
@SebMa Esse é um motivo pelo qual você precisa incluir a saída completa do console de seus comandos para que as respostas possam ser mais precisas e menos baseadas em suposições. Eu editei a resposta mencionando o vídeo. - LordNeckbeard
Desculpe eu esqueci de dar, mas ffmpeg não deu nenhum erro de qualquer maneira. Na minha pergunta, você pode notar que eu usei -map_channel 0.1.0 mas isso não é suficiente para fazer com que ambos os canais apontem para o esquerdo. - SebMa
@SebMa usando -map_channel 0.1.0 funciona para mim fazer um arquivo de áudio mono a partir do canal esquerdo de uma entrada estéreo (com vídeo como o primeiro fluxo). - LordNeckbeard
Eu acho que só funciona para arquivos de áudio. Para vídeos, você precisa adicionar -ac 1 - SebMa


@LordNeckbeard: Encontrei o motivo pelo qual meu arquivo resultante tinha apenas áudio no canal esquerdo como meu arquivo de origem.

Foi porque eu usei:

-map_channel 0.1.0 -map_channel -1

que silencia o segundo canal de áudio, em vez de apenas usar:

-map_channel 0.1.0

Obrigado pela ajuda :)


0