如何使用“反向” vstack组合视频和图像?

时间:2019-01-20 16:57:02

标签: image video ffmpeg

我有图像和视频(相同宽度)。现在,我想使用ffmpeg在视频上方添加图片。 Google和其他SO都使用vstack filter_complex标记,该标记很好用-除了将图像放在视频下方。

我尝试先放置图像,然后放置视频,但这不起作用。我也尝试给vstack命令提供反向输入,但是也没有用!

视频可能还包含我需要保留的音频。

请参见下面的代码:

// Works, but puts image below video (instead of above)
ffmpeg -i test.mp4 -i text.png -filter_complex vstack result.mp4

// Doesn't work at all
ffmpeg -i test.mp4 -i text.png -filter_complex '[1:v][0:v]vstack' result.mp4

// Doesn't work at all
ffmpeg -i test.mp4 -i text.png -filter_complex '[1:v][0:v]vstack=inputs=2[v]' -map '[v]' -map 0:a result.mp4

到目前为止,Google / SO尚未提供有关如何实现这一目标的任何提示。你知道解决方案吗?

1 个答案:

答案 0 :(得分:0)

使用

ffmpeg -i test.mp4 -i text.png -filter_complex '[1:v][0:v]vstack' -c:a copy -pix_fmt yuv420p result.mp4

视频和图像可以具有不同的像素格式。当堆栈过滤器的各种输入格式不同时,过滤器将选择第一个输入的格式,并将所有其他输入转换为该格式。但是,某些视频播放器不支持多种格式。 yuv420p是广泛支持的格式,因此上面的命令将输出强制为该格式。音频(如果存在于MP4中)将被保留。


ffmpeg -i test.mp4 -i text.png -filter_complex '[1:v]format=yuv444p[img];[img][0:v]vstack' -c:a copy -pix_fmt yuv420p result.mp4