ffmpeg如何将彩色叠加到视频上



我想在视频上叠加一个颜色(蓝色、红色、绿色或十六进制值),使其具有类似Instagram滤镜的效果。

我认为应该是这样的:

ffmpeg -i video.mp4 -i "red.png" -filter_complex "blend=all_mode='screen':all_opacity=0.7" output.mp4

或者可能使用all_mode=overlay

但我得到了一个错误:

First input link top parameters (SAR 0:1) do not match the corresponding second input link bottom parameters (SAR 1:1).

我也试过使用lutrgb=r=1.5,但这并没有给它带来红色(它会带走红色)。

我做错了什么?

两个输入必须共享相同的维度和SAR。您可以使用setsar过滤器来设置相同的SAR,也可以通过使用color:来避免完全使用图像文件

ffmpeg -i video.mp4 -f lavfi -i "color=red:s=1280x720" -filter_complex "blend=shortest=1:all_mode=overlay:all_opacity=0.7" output.mp4

其中,s=1280x720是输入视频帧的大小。

该颜色具有[0x|#]RRGGBB[AA]格式。


更新:

如果输入视频SAR仍然有问题,请尝试使用setsar滤波器明确设置:

ffmpeg -i video.mp4 -f lavfi -i "color=red:s=1280x720" 
-filter_complex "[0:v]setsar=sar=1/1[s];
[s][1:v]blend=shortest=1:all_mode=overlay:all_opacity=0.7[out]" 
-map [out] -map 0:a output.mp4

最新更新