这是我使用的命令:
ffmpeg -loop 1 -i image.png -i test.mp3 -ignore_loop 0 -i waves_hori.png -filter_complex "overlay=2:H-200" -c:a copy -c:v h264 -shortest -y test.mp4
是否可以添加一个5秒的结束图像?
您可以通过使用管道自动执行此操作,而不必获取音频持续时间和减去时间。
ffmpeg -loop 1 -i background.png -i audio.mp3 -i overlay.png -filter_complex "overlay=2:H-200=format=auto,format=yuv420p" -c:v rawvideo -c:a pcm_s16le -shortest -f matroska - | ffmpeg -y -ss 5 -an -i - -loop 1 -t 5 -i end.jpg -i test.mp3 -filter_complex "[0][1]concat=n=2:v=1:a=0" -shortest output.mp4
为什么是两个命令和一个管道?
第一个ffmpeg命令与原始命令相似,但输出给了另一个ffmpeg。这允许您利用
-shortest
自动使视频与音频持续时间相匹配。第二个ffmpeg命令从上一个命令中获取视频,跳过视频的开头5秒,然后使用concat滤波器将5秒的图像连接到视频。
使用管道可以避免临时文件和生成丢失。
end.jpg
必须与background.png
具有相同的宽度、高度和纵横比才能正确连接。如果不是,则添加缩放、缩放基准、裁剪或填充过滤器。