- Se a duração do vídeo for menor que o comprimento do áudio,
-shortest
é o que você deseja.
- Se a duração do vídeo for maior que o comprimento do áudio, nenhum sinal será o que você deseja.
Não há sinalizador para automatizar essa decisão.
EDITAR
Inspirado na resposta do @ deadcode, preciso deixar claro que "nenhum sinalizador para automatizar" obviamente não é verdadeiro, se você estiver disposto a reencodificar : nesse caso, use apad
como sugerido por @deadcode.
Se, no entanto, você quiser evitar a reencodificação (ou seja, -c:v copy
), a resposta permanece.
Há uma solução alternativa usando o ffconcat
demuxer, mas precisa de um pouco de trabalho:
- crie um arquivo contendo o silêncio em exatamente o mesmo formato que seu audiofile ("silence.wav")
- crie um arquivo de concat "audio.ffconcat" (com tantas linhas de silêncio quantas forem necessárias para garantir que o áudio seja longo o suficiente):
.
file 'audiofile.wav'
file 'silence.wav'
file 'silence.wav'
...
file 'silence.wav'
- executar
ffmpeg -i videofile.mp4 -f concat -i audio.ffconcat -c:v copy output.mp4
Isso sintetizará o filtro apad
sem um gráfico de filtro, permitindo assim um mux sem reencodificar.