如何从mp4文件转换为ffmpeg后获得具有透明背景填充的动画webp文件?



我需要将mp4视频(1280×720)转换为webp文件(512x512),这样产生的webp文件保持长宽比,并且完全包含在512x512中,顶部和底部的未覆盖区域应该是透明的。

我尝试了以下ffmpeg命令:

ffmpeg -i sample.mp4 
-vcodec libwebp -filter:v fps=fps=20 -lossless 1 -loop 0 -preset default -an -vsync 0 -vf 
scale=512:512:force_original_aspect_ratio=decrease,pad=512:512:-1:-1:color=#00000000 sample.webp

在上面的命令中请注意pad=512:512:-1:-1:color=#00000000我给alpha值00,但它只输出黑色。

我也提到了这个网站https://ffmpeg.org/ffmpeg-utils.html#color-syntax它说

它可以是下面定义的颜色名称(不区分大小写的匹配)或[0x|#]RRGGBB[AA]序列,可能后面跟着@和表示alpha分量的字符串。alpha组件可以是由"0x"组成的字符串。后跟一个十六进制数或介于0.0和1.0之间的十进制数,表示不透明度值(' 0x00 '或' 0.0 '表示完全透明,' 0xff '或' 1.0 '表示完全不透明)。如果未指定alpha分量,则假定为' 0xff '。

我尝试了color=0x000000@0x00color=0x000000@0.0,但结果是不透明的黑色。

对于带有alpha通道的文件转换,也将编解码器更改为libwebp_animm,以便在绘制新帧时清除先前的帧。下面是最终命令的样子:

ffmpeg -i input.mov -c:v libwebp_anim -filter:v fps=fps=20 -lossless 1 
-loop 0 -preset default -an -vsync 0 -vf 
"scale=512:512:force_original_aspect_ratio=decrease,format=rgba,pad=512:512:-1:-1:color=#00000000" 
output.webp

我只是在padformat=rgba,pad之前缺少格式过滤器

ffmpeg -r 30 -i %04d.png -vcodec libwebp -loop 0 -q:v 100 -lossless 1 test.webp

最新更新