Lap Live Photo 配对机制详解:HEIC+MOV 如何自动关联与 AAE 侧车文件维护
【免费下载链接】lapAn offline-first photo manager for large local libraries项目地址: https://gitcode.com/GitHub_Trending/lap3/lap
Lap 是一款离线优先的本地照片管理器(offline-first photo manager),专为大型本地图库设计。它的 Live Photo 配对机制会自动把 iPhone 导出的 HEIC 静态图与 MOV 短视频关联起来,并全程维护 AAE 侧车文件,让你重命名、移动、删除照片时"活照片"永远不拆散。本文带你快速看懂这套机制。
什么是 Live Photo 配对:HEIC + MOV 双文件组合
iPhone 的 Live Photo 在导出后并不是"一个文件",而是一组兄弟文件:
| 文件 | 作用 |
|---|---|
IMG_1234.HEIC | 静态图片(承载"主文件"身份) |
IMG_1234.MOV | 约 3 秒的短视频(Live Photo 的"灵魂") |
IMG_1234.aae | Apple Photos 编辑记录(可选侧车文件) |
Lap 需要在索引阶段把 HEIC 与 MOV "配成对",之后浏览、播放、编辑才都围绕这一对展开。配对入口在 t_sqlite.rs 的pair_live_photos_in_folder函数。
配对两步走:先按文件名,再用 Content Identifier 验证
第一步:文件名匹配(快路径)
配对只在"本次同步触碰到的文件"范围内进行,避免全库扫描。候选图片扩展名为heic / heif / hif / jpg / jpeg,候选视频则是带内容标识符的.mov文件。匹配时按文件主名(stem)对齐,并兼容IMG_1234_HEVC.MOV这种带_HEVC后缀的变体命名(见 t_sqlite.rs 的video_match_stems)。
第二步:Content Identifier 交叉验证(决定性证据)
文件名相同不代表就是同一张 Live Photo(比如复制产生的副本)。Lap 会进一步读取双方元数据里的Content Identifier(com.apple.quicktime.content.identifier,一串 36 位的 UUID):
- 图片侧:从 HEIC 文件头部 2MB 的 XMP 区域中提取,见 t_apple_sidecar.rs 的
scan_apple_content_identifiers; - 视频侧:从 MOV 元数据中提取,MOV 缺少标识符时会自动补读(t_sqlite.rs)。
关键设计:Content Identifier 只用于"确认"同文件名的候选对,绝不会拿它跨文件名去"选中"另一个 MOV。这样复制出的 Live Photo 副本各自保留独立配对,不会互相串线。每个 MOV 也最多被消费一次,防止一对多图时错配。
配对成功后,数据库afiles表会写入media_subtype = 'live_photo'和live_photo_video_id两列(t_sqlite.rs);当 MOV 从文件夹中消失时,clear_live_photo_pairs_in_folder会及时清除失效关联,不留"死链"。
💡 顺带一提:Android 的 Motion Photo 是另一种思路——视频直接内嵌在 JPEG 尾部,无需侧车文件,检测逻辑见 t_motion_photo.rs。
AAE 侧车文件维护:Apple 编辑信息的"隐形伴侣"
AAE 文件记录你在 Apple Photos 里对照片做的裁剪、滤镜等编辑。Lap 在四个关键场景全程维护它:
1️⃣ 导入时随行复制— 导入文件发生重命名(如冲突后缀IMG_1234 (1).HEIC)时,AAE 会按最终目标文件名重新命名后再复制,保证侧车与主文件始终同名(t_apple_sidecar.rs)。
2️⃣ 重命名时同步改名— 重命名主文件前,先为 AAE 生成改名计划并做预检(目标不存在、源文件都在),任何一步失败都能整体回滚(t_apple_sidecar.rs)。
3️⃣ 移动/复制时成组搬迁— 移动 Live Photo 时,MOV 组件和 AAE 会一起规划目标路径;若目标已有同名文件,整组自动追加(1)序号,绝不拆散(t_apple_sidecar.rs)。
4️⃣ 删除时连带清理— 删除照片时,Lap 将"主文件 + 配对的 MOV + AAE 侧车"视为一组同时移入回收站或永久删除(t_cmds.rs),避免遗留孤儿文件。
AAE 的查找采用大小写不敏感匹配,同时支持<主名>.aae与<完整文件名>.aae两种命名形态(t_apple_sidecar.rs)。
在 Lap 中验证配对效果
导入一批 iPhone Live Photo 后,只需在图库中查看:
- 已配对的 Live Photo 会在缩略图上标记动画标识,点击可播放短视频;
- 移动整组照片到新文件夹,确认 MOV 与 AAE 一并跟随;
- 删除一张 Live Photo,检查原目录确认无残留的
.mov/.aae文件。
小结
Lap 的 Live Photo 配对机制可以概括为一句话:文件名定范围、Content Identifier 定真伪、侧车文件全程随行。这套设计让离线照片管理器在面对 Apple 生态"一照片多文件"的复杂结构时,依然能保证重命名、移动、删除等操作的安全性与一致性——这正是它作为大图库离线照片管理器的细致之处。
【免费下载链接】lapAn offline-first photo manager for large local libraries项目地址: https://gitcode.com/GitHub_Trending/lap3/lap
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考