我有一个以 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
导致: