FFMPEG:图像/视频的色度键/绿屏过滤器[关闭]

问题描述 投票:0回答:5

我需要一个视频使用色度键滤镜/绿屏滤镜并将其叠加在另一个视频上并将其输出为新视频。

image-processing filter ffmpeg video-processing chromakey
5个回答
60
投票

答案(现在)是肯定的,有一个过滤器用于生成色度键并覆盖它们。过滤器名称是“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)控制是否不透明度是开关或渐进的程度。 (有关更多信息,请参阅文档)。


13
投票

带有测试数据的最小可运行示例

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 以便在此处上传):

enter image description here 实际视频输出:

https://www.youtube.com/watch?v=3aY6x7u86QQ

原始输入文件供参考:

opengl-旋转三角形.mp4

enter image description here Ciro_Santilli_with_a_stone_carved_Budai_in_the_Feilai_Feng_caves_near_the_Lingyin_Temple_in_Hangzhou_in_2012.jpg

enter image description here 它也适用于视频背景。

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,最终输出也具有该尺寸。预览:

enter image description here 实际视频:

https://www.youtube.com/watch?v=HI8XniA2Bk8

在 Ubuntu 20.10、FFmpeg 4.3.1 上测试。


0
投票
http://reference.wolfram.com/mathematica/ref/ChanVeseBinarize.html

对于离线处理,您将按顺序导入每个图像,对其进行处理,然后导出叠加。最终,您将从所有叠加图像创建新视频。


0
投票

Opencv

包含读取视频、转换为 RGB、分割颜色平面、替换像素基础颜色、合并帧和写入视频所需的所有功能。 研究起来很好,但它不会创建一个插件 directshow 过滤器来自动执行此操作


-1
投票
这个关于超级用户的类似问题的答案

建议使用MLT 来自MLT网站:

MLT 是一个开源多媒体框架,专为电视广播而设计和开发。它为广播公司、视频编辑器、媒体播放器、转码器、网络流媒体和更多类型的应用程序提供了一个工具包。该系统的功能是通过各种即用工具、XML 创作组件和基于 API 的可扩展插件提供的。 尝试和学习 MLT 的最简单方法是下载
Shotcut

© www.soinside.com 2019 - 2024. All rights reserved.