在FFmpeg中,-filter_complex
和-vf
(或-filter:v
)都可以用来应用滤镜,但它们的使用场景有所不同。
-vf
(Video Filter)用于处理简单的、线性的滤镜链,只能应用于一个输入到一个输出。
-filter_complex
则用于处理复杂的滤镜图,可以处理多个输入和多个输出,以及更复杂的滤镜链。
如果你想要同时应用两个滤镜,你可以在一个-vf
或-filter_complex
参数中指定它们,滤镜之间用逗号分隔。例如:
ffmpeg -i input.mp4 -vf "filter1=param1=option1:param2=option2,filter2=param1=option1:param2=option2" output.mp4
在这个例子中,filter1
和filter2
是你要应用的滤镜,param1=option1:param2=option2
是滤镜的参数。
如果你的滤镜链比较复杂,或者你需要处理多个输入或输出,你应该使用-filter_complex
。例如:
ffmpeg -i input1.mp4 -i input2.mp4 -filter_complex "[0:v]filter1=param1=option1:param2=option2[v1];[1:v]filter2=param1=option1:param2=option2[v2]" -map "[v1]" output1.mp4 -map "[v2]" output2.mp4
在这个例子中,[0:v]
和[1:v]
是输入视频流,[v1]
和[v2]
是处理过的视频流,-map "[v1]"
和-map "[v2]"
是将处理过的视频流映射到输出文件。
请注意,你不能同时使用-vf
和-filter_complex
,因为它们都会设置滤镜图,后设置的会覆盖先设置的。如果你需要应用多个滤镜,你应该将它们都放在同一个-vf
或-filter_complex
参数中。
领取专属 10元无门槛券
手把手带您无忧上云