![使用 FFmpeg 将动画 gif 转换为动画 webp](https://linux22.com/image/1593455/%E4%BD%BF%E7%94%A8%20FFmpeg%20%E5%B0%86%E5%8A%A8%E7%94%BB%20gif%20%E8%BD%AC%E6%8D%A2%E4%B8%BA%E5%8A%A8%E7%94%BB%20webp.png)
如何将动画 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