商品详情页的动图是 animated WebP,直接传给多模态接口,模型只描述了第一帧,后面几帧的动作完全没提,文件大小 2.4MB。
一开始怀疑是「部分模型不支持 WebP 直接输入」,查了一圈,方向不对。
真正麻烦的地方在于,几个原因的现象几乎一样。多模态接口按静态图解码 只取首帧。另一种情况是WebP 动图没有转成多张静图。
不容易想到的是,帧间隔信息在转换时丢失。
动手时先确认文件是不是动图
python -c "from PIL import Image;im=Image.open('a.webp');print(im.is_animated,im.n_frames)"
接着拆成多张 PNG 再逐张传入
python split_webp.py --in a.webp --out frames/ --format png
然后把关键帧拼成一张对比图
python montage.py --dir frames --out grid.jpg --cols 3
等前面都确认过,再用多图请求复测描述完整性
python describe.py --images f0.png f5.png f10.png
那几天正好在做别的变更,先把时间线对齐才敢动手。
恢复的判定其实很直接。模型描述里包含后续帧的动作,多图请求返回 200,单张体积都低于接口限制。
容易忽略的是,动图拆帧数量要控制,帧太多会推高 token 与延迟,选首帧、中间帧、尾帧通常够用。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
