如何将WebM文件透明转换为WebP文件?

问题描述

我用ffmpeg尝试过。

ffmpeg input.webm output.webp

input.webm包含透明背景,但是alpha通道在webp中变为白色。我认为这意味着Alpha通道不会融合在一起。

我用this command提取了帧:

ffmpeg -i input.xxx -c:v libwebp output_%03d.webp

它也为我提供了白色背景的webp文件。

如何使用Alpha通道正确转换它?还是应该将其转换为其他格式(扩展名)?

解决方法

使用-c:v libvpx选项,在输入之前 更改解码器,如本例中所示,对于第一帧(-frames:v 1):

ffmpeg -c:v libvpx -i input.webm -frames:v 1 -c:v libwebp -y output.webp

This comment说:

FFmpeg的本机VPx解码器不解码alpha。您必须使用libvpx解码器

您可以使用ffmpeg -decoders | grep libvpx检查解码器,并且应该看到类似以下的输出:

 V....D libvpx               libvpx VP8 (codec vp8)
 V....D libvpx-vp9           libvpx VP9 (codec vp9)

根据该输出,libvpx将是VP8的解码器,libvpx-vp9是VP9的解码器。

您可以使用ffprobe input.webm检查视频的编解码器。您应该看到这样的输出:

    Stream #0:0(eng): Video: vp8,yuv420p(progressive),640x360,SAR 1:1 DAR 16:9,30 fps,30 tbr,1k tbn,1k tbc (default)
    Metadata:
      alpha_mode      : 1

要将整个webm(VP8)转换为动画的webp,请使用:

ffmpeg -c:v libvpx -i input.webm output.webp

要将整个webm(VP9)转换为动画的webp,请使用:

ffmpeg -c:v libvpx-vp9 -i input.webm output.webp

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...