Use
ffmpeg -y -i video.mp4 -i audio.mp3 -af apad -map 0:v -map 1:a -c:v copy -shortest final.mp4
O apad
adiciona silêncio indefinido ao áudio, portanto, o vídeo sempre será o fluxo mais curto.
Eu tenho dois arquivos - video.mp4
e audio.mp3
e quero combiná-los. O vídeo final deve ter duração do video.mp4
.
Eu não sei qual desses dois arquivos é mais longo, então não posso usar a opção -shortest
.
Isso é o que eu tenho até agora:
ffmpeg -y -i video.mp4 -i audio.mp3 -map 0:v -map 1:a -c copy final.mp4
A única maneira que encontrei é ter uma função que primeiro retorna a duração do primeiro arquivo. Este é, claro, o script bash, que você pode copiar / colar no shell, ou escrever um script .sh bash.
function getDuration() {
ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 video.mp4
}
e, em seguida, use essa função para retornar a duração e use isso com o parâmetro -t
ffmpeg -y -i video.mp4 -i audio.mp3 -map 0:v -map 1:a -t $(getDuration) -c copy final.mp4