前言
前段时间带小朋友去日照玩,拍了不少照片,陆续往 NAS 上备份。但有个问题一直让我膈应——华为 Mate60 拍的动态照片死活传不上去,之前还专门研究过这类问题混乱的动态照片。正好最近 workbuddy 上送了些免费积分,索性自己捣鼓一个在线转换工具试试。
正文
需求:把华为动态照片(.jpg 格式,内嵌 .mp4 视频)转换成 Synology Photos 能识别的动态图,也就是 iPhone 的 Live Photo 格式。
一开始我以为这需求挺简单,GitHub 上也有类似的开源项目。第一版工具很快搭好了,图片和视频合成导出,看起来一切正常。然而导入 NAS 后,Synology Photos 并没有把它们识别为动态照片,而是当成一张独立的静态图和一段视频。我反复和 AI 沟通、调整参数,折腾了好几轮,问题依旧没解决——看来事情没那么简单。
接下来进入「穷举调试」阶段:翻开源项目、试各种在线Live Photo生成工具、把能成功识别的动态图喂给 AI 分析参数差异。来回折腾了两天,消耗了近 5000+ 积分,终于定位到关键问题:图片 EXIF 中的 Make 字段不能保留华为原值。清空或修改该字段后,Synology Photos 就能正确识别并合并为 Live Photo 了。
最终效果如下:
总结
纯前端工具确实方便,打开网页就能转。然而正当我掏出华为手机准备批量处理时,却遇到了一个尴尬的问题——在网页的文件选择器里,根本选不到那些动态照片文件(系统层面做了过滤)。找 AI 协助也没能找到绕过方案,无奈只能暂时搁置。
参考
MakeLivePhoto
Live Photo Maker
AssassinJY/live_motion_photos_convert
Bai-Mirror/pyheic_struct