我需要一个视频使用色度键滤镜/绿屏滤镜并将其叠加在另一个视频上并将其输出为新视频。
答案(现在)是肯定的,有一个过滤器用于生成色度键并覆盖它们。过滤器名称是“color key”。网站上有示例,命令如下:
ffmpeg -i <base-video> -i <overlay-video> -filter_complex '[1:v]colorkey=0x<color>:<similarity>:<blend>[ckout];[0:v][ckout]overlay[out]' -map '[out]' <output-file>
其中
<color>
是十六进制匹配的 RGB 颜色(例如:0x000000 表示黑色),<similarity>
是颜色匹配的容差(例如:0.3),<blend>
(例如:0.2)控制是否不透明度是开关或渐进的程度。 (有关更多信息,请参阅文档)。
带有测试数据的最小可运行示例
https://stackoverflow.com/a/32291842/895245的答案是正确的,这只是一个最小的具体示例。
下载输入媒体:
wget https://github.com/cirosantilli/media/raw/master/Ciro_Santilli_with_a_stone_carved_Budai_in_the_Feilai_Feng_caves_near_the_Lingyin_Temple_in_Hangzhou_in_2012.jpg
wget https://github.com/cirosantilli/media/raw/master/opengl-rotating-triangle.mp4
使图像尺寸与1024x1024的视频尺寸相匹配。视频大小可以通过 ffprobe 确定:
convert Ciro_Santilli_with_a_stone_carved_Budai_in_the_Feilai_Feng_caves_near_the_Lingyin_Temple_in_Hangzhou_in_2012.jpg -resize 1024x1024! background.jpg
进行实际转换:
ffmpeg -i background.jpg -i opengl-rotating-triangle.mp4 \
-filter_complex '[1:v]colorkey=0x000000:0.1:[ckout];[0:v][ckout]overlay[out]' \
-map '[out]' out.mp4
转换为 gif 只是为了预览此答案:
ffmpeg -i out.mp4 -r 5 -vf "scale=300:-1,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" out.gif
因此,在我的示例中,我有一个黑色背景,它正在转换为固定图像。
结果预览(可怕的 FPS 适合 2MB 的 GIF 以便在此处上传):
https://www.youtube.com/watch?v=3aY6x7u86QQopengl-旋转三角形.mp4
Ciro_Santilli_with_a_stone_carved_Budai_in_the_Feilai_Feng_caves_near_the_Lingyin_Temple_in_Hangzhou_in_2012.jpg
wget https://upload.wikimedia.org/wikipedia/commons/f/f9/STS-132_Liftoff_Space_Shuttle_Atlantis.ogv
ffmpeg -i STS-132_Liftoff_Space_Shuttle_Atlantis.ogv -i opengl-rotating-triangle.mp4 -filter_complex '[1:v]colorkey=0x000000:0.1:[ckout];[0:v]trim=start=0:end=8[cut0];[cut0][ckout]overlay[out]' -map '[out]' out.mp4
这里我向
shortest=1
过滤器添加了另一个参数
overlay
:overlay=shortest=1
使叠加在三角形视频停止时立即停止,否则默认为在更长的亚特兰蒂斯视频结束时停止。
您可能还想使用
trim
过滤器来选择任意段。
Atlantis 视频的分辨率为 1920x1080,最终输出也具有该尺寸。预览: https://www.youtube.com/watch?v=HI8XniA2Bk8在 Ubuntu 20.10、FFmpeg 4.3.1 上测试。
建议使用MLT。 来自MLT网站:
MLT 是一个开源多媒体框架,专为电视广播而设计和开发。它为广播公司、视频编辑器、媒体播放器、转码器、网络流媒体和更多类型的应用程序提供了一个工具包。该系统的功能是通过各种即用工具、XML 创作组件和基于 API 的可扩展插件提供的。 尝试和学习 MLT 的最简单方法是下载
Shotcut