Fundo
Preciso converter arquivos AVI para H264 (MP4). Estou fazendo isso com sucesso 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 aplicativos C # .Net Winforms, embora suspeite que isso terá pouco impacto na resposta.
A questão
Como adiciono uma faixa de áudio? Preciso adicionar um, pois preciso poder enviar os vídeos para o Instagram, que parece rejeitar arquivos sem trilha de áudio (para meu aborrecimento). Na realidade não preciso de uma faixa de áudio muito longa. Meus pensamentos foram alguns segundos de “silêncio” em formato MP3.
Acho que precisarei de áudio AAC como saída.
Só para constar, também percebo que o -an
comando não fornecerá áudio e retirei isso em minhas tentativas posteriores.
Tentativas até agora
Concluí que precisarei usar o -shortest
comando, pois o áudio será mais curto que o vídeo. Na realidade, adicionarei um MP3 em branco (ou similar) para que, durante a codificação, obtenha um fluxo de áudio incorporado no vídeo.
Eu também tentei usar o -map
comando, mas sem sucesso.
Responder1
Ok, aqui está o comando que estou trabalhando. Descobri que não tinha o libfaac
ffmpeg em minha compilação, então troquei. Eu também não precisei das -map
opções, pois o FFMPEG pode lidar bem com 2 entradas sem configuração extra.
-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 mais curto que vídeo-i
é usado para fornecer a entrada de áudio
Atualizar
O comando depois de algumas ótimas contribuições 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
Responder2
Você pode gerar um fluxo de áudio silencioso com oaevalsrc
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.