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

c-a*_*-an 3 ffmpeg webm webp

我用ffmpeg试过了。

ffmpeg input.webm output.webp
Run Code Online (Sandbox Code Playgroud)

input.webm包含透明背景,但 alpha 通道在 webp 中变成白色。我认为这意味着 alpha 通道没有结合在一起。

我用这个命令提取帧:

ffmpeg -i input.xxx -c:v libwebp output_%03d.webp
Run Code Online (Sandbox Code Playgroud)

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

如何使用 Alpha 通道正确转换它?或者我应该从其他格式(扩展名)转换它?

Her*_*cón 7

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

ffmpeg -c:v libvpx -i input.webm -frames:v 1 -c:v libwebp -y output.webp
Run Code Online (Sandbox Code Playgroud)

这条评论说:

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

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

 V....D libvpx               libvpx VP8 (codec vp8)
 V....D libvpx-vp9           libvpx VP9 (codec vp9)
Run Code Online (Sandbox Code Playgroud)

根据该输出,将是 VP8 和VP9 的libvpx解码器。libvpx-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
Run Code Online (Sandbox Code Playgroud)

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

ffmpeg -c:v libvpx -i input.webm output.webp
Run Code Online (Sandbox Code Playgroud)

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

ffmpeg -c:v libvpx-vp9 -i input.webm output.webp
Run Code Online (Sandbox Code Playgroud)

  • @c-an 请参阅[如何使用 ffmpeg 转换整个目录?](/sf/answers/2363630321/) (2认同)