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

标签 video encoding ffmpeg

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

最佳答案

不是很清楚你所说的顶层 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 元素可以用来做这种事情。

关于video - 将一个视频粘贴到顶层的另一个视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12215001/

相关文章:

javascript - 如何使用 Facebook React 更新视频源?

javafx声音/视频播放

video - 视频开始时的默认质量

php - 将 PHP 默认编码设置为 UTF-8

ffmpeg - 视频幻灯片,闪烁的线条

ffmpeg - ffmpeg 将 mp3 文件拆分为 ts 文件的问题

python - 谁能帮我用 python 读取不断更新的视频文件?

mysql - 如何在 MySQL 中更改 "Show Create Table"结果的编码?

php - PHP编码问题(UTF-8)

ruby - 使用 Popen 在 Windows 中使用 Unicode 文件名对电影进行编码