Come posso convertire un file WebM in un file WebP con trasparenza?
L'ho provato con ffmpeg.
ffmpeg input.webm output.webp
input.webm
contiene 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
Usa l' -c:v libvpx
opzione 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 libvpx
e dovresti vedere un output come questo:
V....D libvpx libvpx VP8 (codec vp8)
V....D libvpx-vp9 libvpx VP9 (codec vp9)
Secondo quell'uscita, libvpx
sarebbe il decoder per VP8 e libvpx-vp9
per 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