FFMPEG adiciona faixa de áudio durante a conversão de formatos de vídeo

2

Plano de fundo

Eu preciso converter arquivos AVI para H264 (MP4). Estou fazendo isso com o seguinte:

-i mymovie.avi -c:v libx264 -crf 19 -preset slow -c:a libfaac -pix_fmt yuv420p -f mp4 -b:a 192k -y -an output.mp4

Estou chamando o comando por meio de um aplicativo C # .Net Winforms, embora eu suspeite que isso tenha pouco impacto na resposta.

A questão

Como adiciono uma faixa de áudio? Eu preciso adicionar um, como eu preciso ser capaz de enviar os vídeos para o Instagram, o que parece rejeitar arquivos sem uma faixa de áudio (para o meu aborrecimento). Na realidade, não preciso de uma faixa de áudio que seja muito longa. Meus pensamentos foram alguns segundos de "silêncio" em formato MP3.

Acho que precisarei do áudio AAC como saída.

Para o registro, também percebo que o comando -an não fornecerá áudio e eu tirei isso em minhas tentativas posteriores.

Tentativas até agora

Reuni que precisarei usar o comando -shortest , pois o áudio será menor que o vídeo. Na realidade, adicionarei um MP3 (ou similar) em branco, assim, enquanto codifico, recebo um fluxo de áudio incorporado no vídeo.

Eu também tentei usar o comando -map , mas sem sucesso.

    
por Graham Smith 03.12.2013 / 11:54

2 respostas

1

Ok, aqui está o comando que estou trabalhando. Eu descobri que não tinha libfaac na minha compilação do ffmpeg, então eu troquei. Eu não precisei das opções -map , pois o FFMPEG pode lidar com 2 entradas sem configurações extras.

-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a libvo_aacenc -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4

As diferenças entre o meu original e o que funciona são:

  • libvo_aacenc substitui libfaac
  • -shortest é adicionado para lidar com áudio menor que o vídeo
  • -i é usado para fornecer a entrada de áudio

Atualizar

O comando depois de uma grande entrada nos comentários é agora

-i test.avi -i music.mp3 -c:v libx264 -crf 19 -preset slow -c:a aac -strict experimental -pix_fmt yuv420p -f mp4 -b:a 192k -y -shortest output.mp4
    
por 03.12.2013 / 12:26
1

Você pode gerar um fluxo de áudio silencioso com a aevalsrc fonte de áudio :

ffmpeg -y -i test.avi -f lavfi -i aevalsrc=0 -c:v libx264 -crf 19 -preset slow \
-pix_fmt yuv420p -shortest output.mp4

Isso é mais fácil do que usar um arquivo de áudio em branco como entrada.

    
por 03.12.2013 / 19:47