如何用FFmpeg创建带透明背景的AVIF图片?
如何用FFmpeg创建带透明背景的AVIF图片?
这个问题我碰到过,主要是你使用的libaom-av1编码器对Alpha通道的默认处理逻辑导致的——它不会自动启用透明通道的编码支持,所以你的透明背景被转成了黑色。咱们来调整命令解决这个问题:
方案1:给libaom-av1添加Alpha通道参数
在原命令基础上,增加两个关键参数,强制编码器保留透明信息:
ffmpeg -f lavfi -i "color=color=#00000000@0.0:size=550x60,format=yuva420p,drawtext=text='Hello how are you?':fontcolor=black:fontsize=55:borderw=1:bordercolor=white:x=(W-tw)/2:y=(H-th)/2" -frames:v 1 -c:v libaom-av1 -pix_fmt yuva420p -alpha_quality 100 hello.avif
-pix_fmt yuva420p:强制输出带Alpha通道的像素格式,避免FFmpeg自动转换为不透明格式-alpha_quality 100:设置Alpha通道的编码质量(取值0-100),确保透明信息完整保留,默认参数可能会丢弃透明数据
方案2:换用对透明更友好的AV1编码器
如果libaom-av1还是有问题,可以试试libsvtav1编码器,它对Alpha通道的支持更直观,不需要额外的质量参数:
ffmpeg -f lavfi -i "color=color=#00000000@0.0:size=550x60,format=yuva420p,drawtext=text='Hello how are you?':fontcolor=black:fontsize=55:borderw=1:bordercolor=white:x=(W-tw)/2:y=(H-th)/2" -frames:v 1 -c:v libsvtav1 -pix_fmt yuva420p hello.avif
运行上面任意一个命令后,生成的AVIF图片就会和你用PNG命令生成的效果一致,背景是透明的啦。
备注:内容来源于stack exchange,提问作者Ricardo Bohner
相关产品推荐
相关产品推荐

