Come posso convertire un file WebM in un file WebP con trasparenza?

Aug 24 2020

L'ho provato con ffmpeg.

ffmpeg input.webm output.webp

input.webmcontiene uno sfondo trasparente e il canale alfa diventa bianco in webp. Penso che questo significhi che il canale alfa non si riunisce.

Ho estratto i frame con questo comando :

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

E mi dà anche file webp con sfondo bianco.

Come posso convertirlo correttamente con il canale alfa? O dovrei convertirlo da un altro formato (estensione)?

Risposte

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

Usa l' -c:v libvpxopzione prima dell'ingresso per cambiare il decoder come in questo esempio per il primo frame ( -frames:v 1):

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

Questo commento dice che:

I decoder VPx nativi di FFmpeg non decodificano alpha. Devi usare il decoder libvpx

Puoi controllare i tuoi decoder usando ffmpeg -decoders | grep libvpxe dovresti vedere un output come questo:

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

Secondo quell'uscita, libvpxsarebbe il decoder per VP8 e libvpx-vp9per VP9.

Puoi controllare il codec del tuo video usando ffprobe input.webm. Dovresti vedere un output come questo:

    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

Per convertire un intero webm (VP8) in un webp animato usa:

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

Per convertire un intero webm (VP9) in un webp animato usa:

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