使用 FFmpeg 将动画 gif 转换为动画 webp

使用 FFmpeg 将动画 gif 转换为动画 webp

如何将动画 gif(带有 Alpha 通道)转换为动画 webp?

我坚持使用透明背景,我不知道如何将具有透明背景的 gif 转换为具有透明背景的 webP,它会保留图像的“踪迹”,

ffmpeg -i 测试.gif 动画.webp

例如,我想转换此 gif -https://i.stack.imgur.com/Ph2cv.jpg到 webP,

目前的输出是 - https://media.giphy.com/media/UqevOuKr66xO04zRBa/giphy.gif

我如何使用 ffmpeg 实现这一点?

答案1

补充@abvarun226 的回答:

使用yuva420p而不是 yuv420p 来添加 alpha 通道并保持透明度。

ffmpeg -i transparent.gif -vcodec webp -loop 0 -pix_fmt yuva420p transparent.webp

为了节省时间,您可以使用以下命令来转换文件夹中的所有文件:

for %%i in (*.gif) do (ffmpeg.exe -i "%%i" -y -vcodec webp -loop 0 -pix_fmt yuva420p "%%~ni.webp")

答案2

我不确定您是否能够解决这个问题,但我能够通过将像素格式设置为来使其工作yuv420p

ffmpeg -i transparent.gif -vcodec webp -loop 0 -pix_fmt yuv420p transparent.webp

答案3

我知道回复晚了...但是当我尝试将 PNG 图像序列导出为动画 WebP 时,我遇到了同样的问题。我通过动画序列的 alpha 通道显示了前几帧的“轨迹”。

我在 Stack Overflow 的这篇文章中找到了解决方案:https://stackoverflow.com/questions/68987106/how-to-make-ffmpeg-convert-a-png-sequence-into-a-webp-sequence-instead-of-makin

基本上,不要使用“-vcodec webp”,而要使用“-vcodec libwebp_anim”...就这样,:D

答案4

在我的系统上使用编译好的 ffmpeg 并启用所有选项,转换该 gif 没有任何问题

--with-chromaprint --with-decklink --with-fdk-aac --with-game-music-emu --with-libbluray --with-libbs2b --with-libcaca --with-libgsm --with-libmodplug --with-librsvg --with-libsoxr --with-libssh --with-libvidstab --with-libvmaf --with-libxml2 --with-opencore-amr --with-openh264 --with-openjpeg --with-openssl --with-rtmpdump --with-rubberband --with-speex --with-srt --with-tesseract --with-two-lame --with-wavpack --with-webp --with-xvid --with-zeromq --with-zimg

相关内容