Concatenar vídeos com o ffmpeg produz vídeo silencioso quando o primeiro vídeo não tem faixa de áudio

3

Eu tenho 3 arquivos mp4:

  • 1.mp4 - tem vídeo, sem áudio
  • 2.mp4 - Tem vídeo e áudio
  • 3.mp4 - Tem vídeo e áudio

Eu criei um arquivo de clipes (clips.txt) para concatenação:

file '1.mp4'
file '2.mp4'
file '3.mp4'

Eu corro a seguinte linha de comando:

ffmpeg -f concat -i "clips.txt" -c:a aac -b:a 160k -y "out.mp4"

O arquivo produzido tem vídeo, mas não há áudio, presumivelmente porque 1.mp4 não possui trilha de áudio.

Se eu rearranjar o arquivo clips.txt, então o 1.mp4 não é o primeiro, o out.mp4 tem uma faixa de áudio.

Existe uma maneira de forçar o ffmpeg a usar o áudio? Eu acho que teria que produzir uma faixa de áudio silenciosa para qualquer vídeo mudo.

Obrigado!

    
por Phil 05.07.2016 / 03:08

1 resposta

5

Para qualquer um que se depara com isso e deseja alcançar a mesma coisa que eu, resolvi-o da seguinte forma:

ffmpeg -i "1.mp4" -f lavfi -i aevalsrc=0 -shortest -y "new_1.mp4"

O que isso diz é:

  • Pegue 1.mp4 (que é o clipe de vídeo sem áudio) (-i "1.mp4")
  • Gere o silêncio mínimo necessário (-f lavfi -i aevalsrc = 0 -shortest)
  • Saída do resultado (-y "new_1.mp4")

A partir daqui eu concateno como fiz antes, mas substituindo "1.mp4" em clips.txt por "new_1.mp4"

    
por 05.07.2016 / 08:07

Tags