FFMPEG:在图像上覆盖缩放的视频

cin*_*lug 2 video ffmpeg overlay images

我正在尝试制作包含静态图像和覆盖在其上的较小视频的视频。叠加视频的尺寸和位置会动态发送到运行 FFMPEG 的服务器脚本,因此我需要在叠加视频之前对其进行缩放。所以,我使用的数值仅用于测试。原始视频的尺寸为 72:48px。我试过这样的命令:

ffmpeg -i background.jpg -vf "movie=overlay.mp4, scale=128:96 [inner]; [in][inner] overlay=70:70 [out]" -y output.mp4
Run Code Online (Sandbox Code Playgroud)

但是,它会立即生成一个空视频。另一方面,如果我尝试-loop 1ffmpeg命令后立即插入,视频的处理似乎需要无穷无尽的时间并且永远不会完成。

我想要实现的是避免首先创建缩放视频。有可能吗,我做错了什么?

Gya*_*yan 7

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
Run Code Online (Sandbox Code Playgroud)

图像需要循环播放,但这将创建一个无休止的流,因此覆盖过滤器中的最短参数在电影结束时停止过滤器。


包括覆盖的音频

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
Run Code Online (Sandbox Code Playgroud)