我无法使用 ffmpeg 将视频叠加在图像之上并将其居中。输出长度为 0 秒

I can't overlay and center a video on top of an image with ffmpeg. The output is 0 seconds long

我有一个 mp4,我想覆盖在 jpeg 之上。我使用的命令是:

Ffmpeg -y -i background.jpg -i video.mp4 -filter_complex "overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2" -codec:a copy output.mp4

但由于某种原因,输出的长度为 0 秒,但缩略图确实正确显示了以图像为中心的视频的第一帧。

我曾尝试使用 -t 4 将输出的长度设置为 4 秒,但这不起作用。

我在 windows 上做这个。

那么你应该循环播放图像直到视频持续时间。因此,您需要在输入图像前添加 -loop 1 。然后图像将具有无限的持续时间。因此,要控制它,请在输出文件前指定 -shortest,这将 trim 所有流到其中最短的持续时间。否则,您可以使用 -t 到 trim 图像持续时间到视频长度。这会做你想做的事。

希望对您有所帮助!

您需要循环播放图像。由于它会无限循环,因此您必须在 overlay 中使用 shortest 选项,以便在 video.mp4 结束时结束。

ffmpeg -loop 1 -i background.jpg -i video.mp4 -filter_complex \
"overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2:shortest=1" \
-codec:a copy -movflags +faststart output.mp4

有关详细信息,请参阅 overlay documentation