我正在尝试制作包含静态图像和较小视频的视频,这些视频将叠加在其上。叠加视频的尺寸和位置会动态发送到运行 FFMPEG 的服务器脚本,因此我需要在叠加视频之前缩放视频。因此,我使用的数值仅用于测试。原始视频的尺寸为 72:48px。我尝试了这样的命令:
ffmpeg -i background.jpg -vf "movie=overlay.mp4, scale=128:96 [inner]; [in][inner] overlay=70:70 [out]" -y output.mp4
但是,它只是立即生成一个空白视频。另一方面,如果我尝试在命令-loop 1
后立即插入ffmpeg
,视频处理似乎需要无限时间,而且永远不会完成。
我首先要避免创建缩放的视频。这可能吗?我做错了什么?
答案1
使用
ffmpeg -loop 1 -i background.jpg \
-vf "movie=overlay.mp4,scale=128:96[inner];[in][inner]overlay=70:70:shortest=1[out]" \
-y output.mp4
图像需要循环播放,但这会创建一个无休止的流,因此覆盖过滤器中最短的参数会在电影结束时停止过滤器。
包含叠加层的音频
ffmpeg -loop 1 -i background.jpg -i overlay.mp4 \
-filter_complex "[1]scale=128:96[inner];[0][inner]overlay=70:70:shortest=1[out]" \
-map "[out]" -map 1:a -c:a copy -y output.mp4