如何将带透明度的mp4视频转换为webm格式?

8

我知道如何使用ffmpeg将mp4转换为webm

ffmpeg -y -i me939371029.mp4 -r 30  out3.webm

但我想使用 webm透明度。该指南使用Blender,但Blender是一种桌面工具,不易自动化,并且仅输出必须转换为视频的PNG。 我想要一个命令行应用程序,可以接受输入的视频、颜色和输出的视频。 例如:

some-app -i video.mp4 -transparent ff0000 -o video.webm

如果ffmpeg中没有类似的东西,我会很惊讶,但我似乎找不到它。


H.264没有alpha通道,那么你想要的结果是什么? - Gyan
@Mulvya 是的,没错。我想要把有绿色背景的H264视频转换成WebM格式,并在WebM中将指定颜色变为透明。 - mikemaccana
1个回答

13

假设需要去除的颜色为 00ff00,则使用:

ffmpeg -i input.mp4 -c:v libvpx -vf "colorkey=0x00ff00:0.1:0.1,format=yuva420p" out.webm

colorkey=0x00ff00:0.1:0.1中,各部分由:分隔。第一部分是关键颜色。

0x00ff00是绿色。

第二部分是相似度。

0.01仅匹配完全匹配的关键颜色,而1.0匹配所有内容。

第三部分是混合百分比。

0.0使像素完全透明或完全不透明。

较高的值会产生半透明像素,透明度越高,像素颜色与关键颜色越相似。

请参阅ffmpeg colorkey文档


解决自动备用参考报错问题

当出现以下错误时:

Transparency encoding with auto_alt_ref does not work Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height

您可以通过添加参数-auto-alt-ref 0来禁用auto_alt_ref


2
谢谢!我需要先执行 brew reinstall ffmpeg --with-libvpxformat=yuva420p' 是必需的吗? - mikemaccana
1
滤镜在RGB空间中工作。因此,为了保留alpha通道,应该在某个地方指定格式,无论是在当前的链中还是在外部,例如-pix_fmt yuva420p - Gyan
您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - mikemaccana
1
还有一种在YUV中工作的chromakey滤镜。 - llogan
1
“420p”会限制我只能输出420p吗?- 不会,这是像素色度抽样,即颜色分辨率,而不是图像尺寸。 - Gyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接