我遇到了一些问题,我有一个倒置录制的源视频。我需要旋转此视频并在其上叠加几个透明的 PNG 文件。我使用以下命令:
ffmpeg -i Upside_Down.mov -r 1 -i overlays_%d.png -c:v libx264 -r 30 -pix_fmt yuv420p -filter_complex "overlay=0:0" output.mkv
上述命令运行完美,但显然会使源视频倒置,我知道可以通过 -vf vflip:hflip 实现旋转,但这似乎不起作用。有没有办法实现这个目标,或者唯一的选择是翻转源视频并在第二次运行中应用叠加,即首先执行然后ffmpeg -i Upside_Down.mov -vf vflip:hflip
在完成后运行上面的代码?
答案1
你只需要创建一个过滤链包括您的附加过滤器:
ffmpeg -i Upside_Down.mov -r 1 -i overlays_%d.png -c:v libx264 -c:a copy -filter_complex "[0:v][1:v]overlay,vflip,hflip,format=yuv420p[out]" -map "[out]" -map 0:a output.mkv
我喜欢明确标记过滤器输入和输出链接标签,以便您确切知道发生了什么,而不是依赖可能未知的默认值。
[0:v]
指的是第一个输入的视频流(Upside_Down.mov
),[1:v]
指的是第二个输入的视频流(overlays_%d.png
)。我补充
-c:a copy
说流复制音频而不是重新编码,但我不确定是否Upside_Down.mov
包含音频。这就是为什么您应该始终ffmpeg
在命令中包含完整的控制台输出的原因之一。由于可以通过过滤来更改像素格式,因此我将其从更改
-pix_fmt
为format
视频滤镜因此任何潜在的转换都可以在你想要的时候发生。我-r
对fps
视频滤镜(但我不确定你为什么可能会改变帧速率:控制台输出会很有用)。