将 PNG 转换为具有透明度的 webm 视频
Posted
技术标签:
【中文标题】将 PNG 转换为具有透明度的 webm 视频【英文标题】:Convert PNGs to webm video with transparency 【发布时间】:2016-04-30 16:18:44 【问题描述】:我想使用avconv
将一系列 PNG 图像转换为 WebM 视频,同时保留透明度。
我了解输出视频中使用的像素格式必须支持透明度。所以我尝试了:
$ avconv -framerate 25 -f image2 -i frames/%03d.png -pix_fmt yuva420p output.webm
很遗憾,avconv
抱怨:
Incompatible pixel format 'yuva420p' for codec 'libvpx-vp9', auto-selecting format 'yuv420p'
我正在使用ffmpeg version 2.8.4-1+b1 Copyright (c) 2000-2015 the FFmpeg developers
。
【问题讨论】:
avconv != ffmpeg 【参考方案1】:您还可以使用以下命令将已经包含 alpha 通道的视频转换为具有透明度的 webm 视频:
ffmpeg -i myVideoWithAlphaChannel.mov -c:v libvpx -vf format=rgba myVideoWithAlphaChannel.mov.webm
myVideoWithAlphaChannel.mov(使用 Blender3D 生成)的格式为:
“Quicktime”格式 “PNG”编解码器作为输出:
H.264 RGBAHere Blender 3D rendering configuration
【讨论】:
【参考方案2】:使用 VP8:
ffmpeg -framerate 25 -f image2 -i frames/%03d.png -c:v libvpx -pix_fmt yuva420p output.webm
编辑:现在,使用 VP9
ffmpeg -framerate 25 -f image2 -i frames/%03d.png -c:v libvpx-vp9 -pix_fmt yuva420p output.webm
【讨论】:
感谢您的洞察力。但是,如果我运行您的命令,它无法正常工作,avconv 会抱怨Specified pix_fmt is not supported
。我正在使用avconv version 9.18-6:9.18-0ubuntu0.14.04.1, Copyright (c) 2000-2014
切换到最近的 ffmpeg 构建并尝试。
还是没有运气。我现在使用avconv version 11.3-6:11.3-1~trusty
,但仍然得到Specified pix_fmt is not supported
。
在您的回答(现已更新)中,您写的是 avconv
而不是 ffmpeg
。所以我也使用了avconv
。使用 ffmpeg,谢谢!
对于任何对 Ubuntu LTS 感到沮丧的人:VP9+alpha 不适用于 ffmpeg 2.8.x,您应该获得 ffmpeg 3.x。【参考方案3】:
由于2016-07-13,可以使用 Alpha 通道 (VP9a) 对 VP9/webm 视频进行编码。
您只需要在该日期之后编译的 ffmpeg 的副本。顺便说一句,你只需要写:
ffmpeg -i frames/%03d.png output.webm
FFmpeg 理解 png 格式,并将设置默认帧率 25 fps 和 yuva420p
像素格式输出。
【讨论】:
我添加了-b:v 800k
以提高视频比特率以获得更好的图像质量。默认值不够好。
对我不起作用。 ffmpeg 4.3.2,视频不透明。以上是关于将 PNG 转换为具有透明度的 webm 视频的主要内容,如果未能解决你的问题,请参考以下文章
当我将透明度添加到 gif 并将其转换为 webm 时出现故障
将位图 (bmp) 转换为具有透明度的 png (Windows c++)