批量修复 DJI Mimo 导出照片/视频的拍摄时间


DJI Mimo APP 导出的照片和视频导入 Apple Photos 后,日期可能会显示错误。更麻烦的是,Apple Photos 原生不支持批量恢复原始拍摄时间——选择多张照片时”恢复”按钮会消失。

本文介绍如何使用 osxphotos timewarp 命令,从文件名中提取正确的拍摄时间并批量修复。

前提条件

此方法需要 macOS 环境,你可以选择:

DJI Mimo 文件命名规则

首先需要理解 DJI Mimo 的文件命名结构:

dji_mimo_20260101_151718_20260101151719_1767262128881_photo.jpg
│        │        │      │              │             │
│        │        │      │              │             └─ 类型标识 (photo/video)
│        │        │      │              └─ Unix 时间戳(毫秒)
│        │        │      └─ 第二个时间戳:YYYYMMDDHHMMSS(实际拍摄时刻)
│        │        └─ 第一个时间戳的时间部分:HHMMSS
│        └─ 第一个时间戳的日期部分:YYYYMMDD
└─ 固定前缀

两个时间戳的区别

时间戳示例含义
第一个20260101_151718文件创建/保存时间
第二个20260101151719实际拍摄时刻(我们需要的)

对于视频,两者差距可能是视频时长(录制结束 vs 录制开始);对于照片,通常只差 1 秒左右。

osxphotos parse-date 解析规则

--parse-date 参数使用类似 strptime 的格式,加上扩展通配符:

符号含义示例
%Y4位年份2026
%m2位月份01
%d2位日期01
%H2位小时(24h)15
%M2位分钟17
%S2位秒19
*匹配任意字符(通配符)跳过不需要的部分
?匹配单个字符更精确的跳过

解析模式解读

dji_mimo_*_*_%Y%m%d%H%M%S
│        │ │ └─ 提取:20260101151719
│        │ └─ 跳过:151718
│        └─ 跳过:20260101
└─ 固定匹配:dji_mimo_

* 而不是 ???????? 的原因:

  • * 匹配任意长度,更灵活
  • ???????? 精确匹配 8 个字符,更严格
  • 对于 DJI Mimo 文件,* 足够且更简洁

安装 osxphotos

brew install osxphotos

详细安装说明参考:osxphotos 官方安装文档

操作步骤

1. 整理照片到相册

在 Apple Photos 中,将所有 DJI Mimo 导出的文件整理到一个相册(如 DJI Album)。

2. 运行修复命令

osxphotos timewarp \
  --album "DJI Album" \
  --parse-date "dji_mimo_*_*_%Y%m%d%H%M%S" \
  --timezone "Asia/Shanghai" \
  --verbose

参数说明

参数说明
--album指定要处理的相册名称
--parse-date文件名解析模式
--timezone时区设置(根据你的位置调整)
--verbose显示详细输出

3. 验证结果

两种方式:

直接在 Apple Photos 中确认(推荐):打开 Photos 应用,查看照片/视频的日期是否已更新。

使用命令行查询(可选):

osxphotos query --album "DJI Album" --json | jq | head -100

注:--json 输出是单行 JSON,需要 jq 格式化后才能阅读。

注意事项

必须登录自己的 iCloud 帐号:iCloud 同步是整体的,无法单独切换 Photos 的帐号。如果使用虚拟机,需要在虚拟机中登录你自己的 Apple ID。

  • 建议操作前备份照片图库
  • 此方法同时适用于照片和视频