我无法使用 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。
我有一个 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。