Como substituir um fluxo de áudio em um arquivo de vídeo com vários fluxos de áudio?

17

Eu quero substituir o segundo fluxo de áudio (0: 2) em um arquivo de vídeo que tenha dois fluxos de áudio e, se possível, fornecer um rótulo. Como eu iria sobre isso? Todos os comandos ffmpeg que encontrei não me deixam manter o segundo fluxo de áudio.

    
por Anonymous 20.08.2014 / 00:24

1 resposta

20

Use a -map opção para escolher seus fluxos. A seleção de fluxo padrão escolherá apenas um de cada tipo de fluxo, e é por isso que -map precisa ser usado.

Substituir o segundo fluxo de áudio

ffmpeg-ivideo.mkv-iaudio.mp3-map0:v-map0:a:0-map1:a\-metadata:s:a:0language=eng-metadata:s:a:1language=sme-codeccopy\-shortestoutput.mkv
  • 0:v-O0refere-seàprimeiraentradaqueévideo.mkv.Ovsignifica"selecionar tipo de fluxo de vídeo".

  • 0:a:0 - O 0 refere-se à primeira entrada que é video.mkv . O a significa "selecionar tipo de fluxo de áudio". O último 0 refere-se ao primeiro fluxo de áudio dessa entrada. Se somente 0:a for usado, todos os fluxos de vídeo serão mapeados.

  • 1:a - O 1 refere-se à segunda entrada, que é audio.mp3 . O a significa "selecionar tipo de fluxo de áudio".

  • -codec copy cópia de fluxo (re-mux) em vez de codificar. Se você precisar de um codec de áudio específico, deverá especificar -c:v copy (para manter o vídeo) e, em seguida, por exemplo, -c:a libmp3lame para recodificar o fluxo de áudio para MP3.

  • -shortest terminará a saída quando a entrada mais curta terminar.

Combine dois fluxos de áudio em um

ffmpeg-ivid.mkv-iaud.mp3-filter_complex"[0:a][1:a]amerge=inputs=2[a]" \
-map 0:v -map "[a]" -c:v copy -c:a aac -strict experimental -b:a 192k -ac 2 \
-shortest out.mp4
  • A filtragem requer recodificação, e o amerge filter é usado aqui, então o áudio não pode ser stream copiado neste exemplo.
por 20.08.2014 / 01:13