将一个视频粘贴到顶层的另一个视频

时间:2012-08-31 12:03:57

标签: video encoding ffmpeg

我有超过100多个视频,我需要在每个视频的顶层粘贴一个5秒avi视频(类似水印或动画徽标)。它可以用Adobe Premiere执行,但它太长而且太愚蠢。在哪里可以找到合适的框架来处理视频(任何语言)?或者其他任何方法吗?也许'ffmpeg'可以帮忙吗?任何帮助,链接,文件都会很棒。

2 个答案:

答案 0 :(得分:1)

关于顶层5秒avi视频的含义不太明确。 我猜你的水印是5秒长,100多个视频是任意长度你想把第一个放在第二个的某个位置

ffmpeg有一个叠加过滤器:这是文档

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

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

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

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

'main_w,main_h'

main input width and height

'W,H'

same as main_w and main_h

'overlay_w,overlay_h'

overlay input width and height

'w,h'

same as overlay_w and overlay_h 

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

接受的选项的描述如下。

“RGB”

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选项更好的选择。有一个视频混合器元素可以完成这种事情。

答案 1 :(得分:0)

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

MSDN link - Add visual overlays
How to Video
MSDN link - Using the SDK
Wade Wegner blog post