0

我有超过 100 多个视频,我需要在每个视频的顶层粘贴一个 5 秒的 avi 视频(例如水印或动画徽标)。它可以用 Adob​​e Premiere 执行,但它太长而且太笨了。我在哪里可以找到很好的框架来处理视频来执行这个(任何语言)?或者任何其他方法来做到这一点?也许'ffmpeg'可以提供帮助?任何帮助、链接、文档都会很棒。

4

2 回答 2

1

不是很清楚你所说的顶层 5 秒 avi 视频是什么意思。我猜你的水印是 5 秒长,100 多个视频是任意长度,你想把第一个放在第二个的某个位置

ffmpeg 有一个覆盖过滤器。:这是文档

将一个视频叠加在另一个视频之上。

它需要两个输入和一个输出,第一个输入是覆盖第二个输入的“主”视频。

它接受参数:x:y[:options]。

x 是主视频上叠加视频的 x 坐标,y 是 y 坐标。x 和 y 是包含以下参数的表达式:

'main_w, main_h'</p>

main input width and height

'W,H'</p>

same as main_w and main_h

'overlay_w,overlay_h'</p>

overlay input width and height

'w,h'</p>

same as overlay_w and overlay_h 

options 是 key=value 对的可选列表,以“:”分隔。

接受选项的描述如下。

'RGB'</p>

If set to 1, force the filter to accept inputs in the RGB color space. Default value is 0. 

请注意,帧是按时间戳顺序从每个输入视频中获取的,因此,如果它们的初始时间戳不同,最好将两个输入通过 setpts=PTS-STARTPTS 过滤器让它们以相同的零时间戳开始,就像电影过滤器的例子一样。

遵循一些示例:

# draw the overlay at 10 pixels from the bottom right
# corner of the main video.
overlay=main_w-overlay_w-10:main_h-overlay_h-10

这个对我有用: ffmpeg -i ./external/bb_high.mp4 -i external/small.mp4 -strict -2 -filter_complex 'overlay=10:10' output.mp4

但是 5 秒结束时,我认为最后一帧仍保留在叠加层中。

这是 gstreamer 选项更好的地方。有一个 videomixer 元素可以用来做这种事情。

于 2012-08-31T12:21:59.920 回答
0

不使用 ffmpeg,但使用 Expression Encoder,您可以在视频顶部叠加图像或“移动图像”,或者您可以轻松地将两个视频拼接在一起。

MSDN 链接 - 添加视觉覆盖
如何视频
MSDN 链接 - 使用 SDK
Wade Wegner 博客文章

于 2012-10-08T22:19:38.883 回答