我正在尝试创建具有透明背景的 avif 图像。我用来创建具有透明背景的 PNG 图像的类似命令似乎不适用于 avif 文件:
ffmpeg -f lavfi -i "color=color=#[email protected]: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 hello.avif
这会导致图像背景为黑色,但我希望它是透明的...我在 avif.io 上看到 avif 图像支持透明度。
对于 PNG 图像,该命令有效:
ffmpeg -f lavfi -i "color=color=#[email protected]: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 hello.png
图像看起来应该是这样的:
关于如何使用 avif 图像来实现这一点,您有什么想法吗?
答案1
您需要 ffmpeg 5.1 或更新版本。
根据提交,需要提供两个流。第一个用于颜色数据 (YUV),第二个是用作 alpha 的单色单平面。最简单的方法是映射视频两次,并在第二个上使用 alphaextract 过滤器。
例如
ffmpeg -f lavfi -i "color=color=#000000@0:size=550x60,format=yuva420p,drawtext=text='Hello how are you?':fontcolor=black:fontsize=55:x=(W-tw)/2:y=(H-th)/2" -map 0 -map 0 -filter:v:1 alphaextract -frames:v 1 -c:v libaom-av1 -still-picture 1 hello.avif