动画WebP在iOS上不播放怎么办?

博主纳利 阅读 82

我用FFmpeg把GIF转成了动画WebP,本地测试Chrome和Android都正常播放,但iOS Safari完全不动,就显示第一帧。查了下说iOS 14+才支持,但我测试的是iOS 16的设备啊?

转换命令是:ffmpeg -i input.gif -loop 0 output.webp,也试过加-lossless 1还是不行。是不是还需要什么特殊参数?或者得用别的方案兜底?

我来解答 赞 19 收藏
二维码
手机扫码查看
2 条解答
设计师建云
这个问题挺常见的,iOS对WebP的支持确实比Chrome和Android严格很多。

根本原因是FFmpeg默认生成的WebP参数跟iOS兼容性不好。

你那个命令只指定了loop,但iOS对WebP的色度采样、帧率、编码方式都很敏感。

试试这个命令:

ffmpeg -i input.gif -vf "fps=15,scale=480:-1:flags=lanczos,split[s0][s1];[s0]palettegen[p];[s1][p]paletteuse" -loop 0 -lossless 0 -quality 80 -compression_level 6 output.webp


解释一下各个参数的作用:

fps=15 - 明确指定帧率,iOS对默认的奇怪帧率可能不认

scale=480:-1 - 宽度限制480,高度自动,保持比例。iOS对超大尺寸的WebP有时会出问题

lanczos - 缩放算法,比默认的bilinear质量好

palettegen/paletteuse - 这个是关键!GIF转WebP必须用调色板优化,否则颜色会失真严重,iOS可能就直接不播了

lossless 0 + quality 80 - 有损模式反而比无损更容易兼容iOS,别问我为什么,Apple的锅

compression_level 6 - 压缩级别,平衡体积和兼容性



如果还是不行,还有兜底方案:

用video标签加source,WebP不支持时自动降级到GIF:



playsinline必须加,否则iOS会全屏播放而不是内联。

或者直接用GIF,虽然体积大点,但兼容性最稳。你都转过一道了,再存个GIF版本也不费劲。
点赞
2026-03-11 13:07
司徒忠娟
iOS Safari对WebP动画支持其实有坑——它只认
点赞 8
2026-02-24 01:04