我可以使用 FFMPEG 一步调整大小、填充视频并叠加图像吗?

我可以使用 FFMPEG 一步调整大小、填充视频并叠加图像吗?

我有一个以 640x360 录制的输入视频(如果有任何区别的话,它来自网络摄像头)。

我希望输出为 1280x720(原始宽度的两倍),并且我希望原始视频向右移动并垂直居中。

我有两个或更多 640x720 的图像(png),它们应该在左侧视频的特定时间显示。

以下是我必须重新调整大小和填充原始视频的内容:

ffmpeg -i "E:\Videos\testvid.wmv" -q:a 0 -q:v 0 -vf "pad=1280:720:(1280-iw):(720-ih)/2" -s 1280:720 "E:\Videos\new.wmv"

以下是我要插入到视频中的图像:

ffmpeg -i "E:\Videos\new.wmv" -i "E:\Pictures\red_640x720.png" -filter_complex "[0:v][1:v] overlay=0:0:enable='between(t,1,10)'" "E:\Videos\new2.wmv"

上面的两个语句运行良好。但是,我想一次性执行所有语句,以便 FFMPEG 只运行一次(如果可能的话)。有人能帮我解释一下语法吗?

谢谢。

答案1

用逗号连接过滤器。一个或多个过滤器的线性序列构成过滤器链。用分号连接过滤器链以创建过滤器图。请参阅滤波简介滤镜图描述了解更多详细信息。

例子:

-filter_complex \
"[0:v]filter_0,filter_1,filter_2[chain1]; \
 [1:v]filter_3,filter_4,filter_5[chain2]; \
 [chain1][chain2]filter_6"

因此你的命令可能看起来像这样:

ffmpeg -i video.wmv -i image0.png -i image1.png -filter_complex \
"[0:v]pad=iw*2:ih*2:ow-iw:(oh-ih)/2[padded]; \
 [padded][1:v]overlay=0:0:enable='between(t,1,10)'[bg]; \
 [bg][2:v]overlay=0:0:enable='between(t,10,20)'[out]" \
-map "[out]" -map 0:a output.wmv

导致:

覆盖层覆盖在覆盖层上

相关内容