把安卓/小米 Motion Photo 动态照片转换成 iPhone/iOS 可识别的 Live Photo 实况照片。
项目目标是尽量保留原图信息,包括拍摄时间、GPS、设备信息等元数据,并输出可以导入 Apple Photos 的成对文件:
.HEIC:Live Photo 静态图.MOV:Live Photo 视频
- 批量扫描目录,自动识别 Android Motion Photo
- 支持小米
GCamera:MotionPhoto和GCamera:MicroVideoOffset等格式 - 转换为 Apple Live Photo 所需的
HEIC + MOV - 保留 EXIF、拍摄时间、GPS、设备信息等元数据
- 可选保留 HDR GainMap,输出 Apple HDR auxiliary image
- Web UI 实时显示扫描、转换进度和输出结果
- 支持断点续传:已成功处理且内容未变的文件会自动跳过
- 支持普通图片、视频、未知文件复制/链接到输出目录
Windows Git Bash 下:
source ~/miniconda3/etc/profile.d/conda.sh
conda activate vphotomacOS/Linux 终端下:
source ~/miniconda3/etc/profile.d/conda.sh
conda activate vphoto如果你用的是 Anaconda,把上面的 ~/miniconda3 换成 ~/anaconda3。
Windows Git Bash:
cd ~/repo/MotionPhoto2AppleLivePhoto/webapp
./dev.shmacOS/Linux:
cd ~/repo/MotionPhoto2AppleLivePhoto/webapp
./dev.sh打开:
http://127.0.0.1:5173
- 在页面中选择或输入安卓照片目录
- 点击扫描,确认 Motion Photo 数量
- 设置输出目录
- 根据需要调整并发数、编码速度、HDR 选项
- 点击开始转换
- 转换成功一个,输出列表会实时出现一个结果
Windows Git Bash:
source ~/miniconda3/etc/profile.d/conda.sh
conda activate vphoto
cd ~/repo/MotionPhoto2AppleLivePhoto
bash run_tests.shmacOS/Linux:
source ~/miniconda3/etc/profile.d/conda.sh
conda activate vphoto
cd ~/repo/MotionPhoto2AppleLivePhoto
bash run_tests.sh项目提供了一个扫描脚本,用来统计某个目录里哪些文件能被识别为 Motion Photo:
python scripts/scan_motion_photo_coverage.py --root /f/xiaomi --all-files --output motion_photo_coverage.csv输出 CSV 中包含路径、文件大小、分辨率、是否 Motion Photo、解析错误等信息。
Android Motion Photo 通常是一个 JPEG 文件,前半部分是静态照片,尾部追加一段 MP4 视频。文件里的 XMP 元数据会描述这些内容的位置,例如:
GCamera:MotionPhotoGCamera:MicroVideoGCamera:MicroVideoOffsetContainer:DirectoryItem:Semantic="MotionPhoto"
本项目会:
- 解析 JPEG/XMP,定位静态图、GainMap 和尾部 MP4
- 提取静态图和视频
- 将静态图重新编码为 Apple 兼容 HEIC
- 将 MP4 封装为 MOV
- 为 HEIC 和 MOV 注入相同的 Apple
ContentIdentifier - 保留原始 EXIF/GPS/时间等元数据
- 输出同名
.HEIC + .MOV,供 Apple Photos 配对识别为 Live Photo
更详细的格式分析、兼容性结论和实验记录见 guide.md。
HEIC 编码主要走 CPU。Web UI 支持并发转换,可以根据机器负载调整 worker 数。
对于 Motion Photo:
input/MVIMG_20260324_220411.jpg
会输出:
output/MVIMG_20260324_220411.HEIC
output/MVIMG_20260324_220411.MOV
对于非 Motion Photo 文件:
- 普通图片:复制到输出目录,保留 metadata
- 视频:优先软链接,失败时硬链接,再失败时复制
- 其它文件:复制到输出目录
- Web UI 缓存文件在用户目录下的
.mvimg2livephoto:- 扫描缓存:
~/.mvimg2livephoto/scan_cache.db - 转换进度:
~/.mvimg2livephoto/progress.db
- 扫描缓存:
- Windows 上对应路径一般是
C:\Users\<用户名>\.mvimg2livephoto\scan_cache.db - 如果修改了 Motion Photo 识别逻辑,Web UI 里旧的扫描缓存可能需要重新扫描或删除
scan_cache.db - Windows 下软链接可能需要管理员权限或开发者模式;项目会自动 fallback 到硬链接/复制
- HDR GainMap 是否被 Apple Photos 识别,建议用
exiftool检查 HEIC 中的 auxiliary image 信息

