我有超过100+视频,我需要粘贴一个5秒的avi视频在每个视频的顶层(像水印或动画标志)。它可以在Adobe Premiere上运行,但它太长太愚蠢了。我在哪里可以找到好的框架来使用视频来执行这一点(任何语言)?或任何其他方法来做吗?也许“ffmpeg”能帮上忙?任何帮助,链接,文档都会很棒。
发布于 2012-08-31 20:22:00
不是很清楚你的意思是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选项更好的地方。有一个videomixer元素可以用来做这种事情。
发布于 2012-10-09 06:19:39
不使用ffmpeg,但使用表达式编码器,您可以覆盖图像,或‘运动图像’的顶部的视频,或者你可以很容易地将两个视频缝合在一起。
https://stackoverflow.com/questions/12215001
复制相似问题