使用ffmpeg淡出音频而不知道视频长度

时间:2018-01-31 21:16:32

标签: ffmpeg

我使用以下命令行与ffmpeg一起将音轨添加到没有任何音轨的视频中。

ffmpeg -i final.mp4 -i soundtrack.mp3 -c:v copy -c:a aac -map 0:v:0 -map 1:a:0 -shortest with_audio.mp4

我正在寻找一种方法,可以在视频结束时以3秒的速度淡出音量。音轨总是比视频长,但视频可以是任意长度。我发现的现有命令行需要指定何时开始/结束淡入淡出效果的确切时间。我正在寻找一种与视频长度无关的方式,我只是希望声音在视频结束前淡出为3s开始。

有没有办法用ffmpeg做到这一点?

非常感谢您的答案!

1 个答案:

答案 0 :(得分:1)

使用ffprobe to get duration

ffprobe -v error -select_streams v:0 -show_entries stream=duration -of csv=p=0 input.mp4

然后将持续时间用作ffmpeg命令中的变量。

ffmpeg -i input.mp4 -i soundtrack.mp3 -filter_complex "[1:a]afade=t=out:st=$(bc <<< "$duration-$fade"):d=$fade[a]" -map 0:v:0 -map "[a]" -c:v copy -c:a aac -shortest with_audio.mp4