WebMファイルを透過性のあるWebPファイルに変換するにはどうすればよいですか?

Aug 24 2020

ffmpegで試してみました。

ffmpeg input.webm output.webp

input.webm透明な背景が含まれていますが、WebPではアルファチャネルが白になります。アルファチャンネルが合わないということだと思います。

私はこのコマンドでフレームを抽出しました:

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

また、背景が白のwebpファイルも表示されます。

アルファチャネルで適切に変換するにはどうすればよいですか?または、他の形式(拡張子)から変換する必要がありますか?

回答

1 HernánAlarcón Aug 24 2020 at 11:28

入力の前にある-c:v libvpxオプションを使用して、最初のフレーム()のこの例のようにデコーダーを変更します。-frames:v 1

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

このコメントは次のように述べています。

FFmpegのネイティブVPxデコーダーはアルファをデコードしません。libvpxデコーダーを使用する必要があります

を使用ffmpeg -decoders | grep libvpxしてデコーダーを確認すると、次のような出力が表示されます。

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

その出力によると、libvpxVP8とlibvpx-vp9VP9のデコーダーになります。

を使用して、ビデオのコーデックを確認できます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