Live Photo和HDR媒体库压缩方案
Published:
存在先于完美。
我的照片/视频库已累积至数百GB、数万个文件,分别存储在NAS和手机本地。长期以来,为了减少iCloud等服务的费用,我依赖Synology Photos进行管理,但其痛点也日益明显:
- 缺乏离线访问:在非局域网环境下,浏览体验严重受限。
- 新特性支持不佳:尽管兼容Live Photo,但对HDR照片等现代图像特性的支持并不完善。
- 智能功能薄弱:AI人脸识别和场景搜索等功能远不及主流云相册。
为了解决这些问题,一个自然而然的思路是建立一个分层存储系统:在NAS上保留未经修改的原始文件,同时在手机上同步一份经过深度压缩的“优化版”,类似于苹果的“优化iPhone储存空间”功能。
技术选型上,当前最前沿的编码标准已经能实现惊人的压缩率。视频可以采用AV1 + Opus,而图片则可以使用基于AV1的AVIF格式。比如下图的对比,我将一张图片在缩放分辨率后使用不同的编码压缩到相同的大小,可以看到AVIF在极高压缩比时保持了出色的质量。您可以在这里找到复现代码和图片:Image Codec Quality Compare)
不可避免的妥协:我们失去了什么?
然而,当我们把一个包含丰富信息的多媒体对象(如Live Photo或HDR照片)压缩成一个单一的、以“小”为目标的AVIF文件时,信息的损失是必然的。这个方案的主要代价是:
- 动态的消逝:Live Photo的生命力在于其附带的短视频。压缩后,动态效果消失,只留下一张静态的“遗照”,那些生动的瞬间将不复存在。
- 光影的扁平化:现代HDR照片能在兼容设备上展现从深邃暗部到耀眼高光的全部细节。压缩时,为了追求极致体积,通常会执行“色调映射”,将宽广的动态范围压缩至标准范围(SDR)。这会导致原本层次分明的光影变得“平淡”,失去了身临其境的视觉冲击力。
接下来我们逐个查看实现方式。
Live Photo:结构、原理与兼容方案
苹果的Live Photo(实况照片)虽然体验无缝,其技术实现却相当直白。它并非一个特殊格式的文件,而是由一个静态图片(通常是HEIC)和一个短视频(MOV)组成的文件对。
这两个文件通过一个共享的元数据(Metadata)标识符相互关联,从而让系统知道它们应被作为一个整体来呈现。无论是从macOS相册中导出,还是探究Synology Photos的底层存储,都可以验证这一结构。
这一机制为我们的压缩方案提供了绝佳的突破口。我们完全可以将原有的HEIC和MOV文件分别转换为压缩率更高的AVIF图片和AV1+Opus编码的MP4视频,只要确保将原始的EXIF和关键的关联ID一同迁移到新文件中,苹果相册依然能将它们识别并正确显示为Live Photo。
您可以将下方的示例文件保存到相册,亲身体验这一效果。如果遇到问题,请尝试拖动到macOS的相册里进行导入。
HDR:标准多样性与转换现状
相比于Live Photo的“组合拳”,处理HDR照片的压缩则要复杂得多。HDR标准繁多,不同设备和软件的兼容性各异(对此,Jackchou的系列文章有深入探讨),因此我们的讨论将聚焦于Apple生态内的实现。
截至本文撰写时,主流的开源图像处理库(如ImageMagick、libheif、FFmpeg)在转换iPhone拍摄的HDR照片时,仍无法保留其核心的HDR信息——即苹果使用的Gain Map技术。
幸运的是,色彩科学专家Jackchou的hdr-conversion工具解决了这个难题。它能够读取iPhone拍摄的、包含Gain Map的HEIC文件,并将其转换为保留高动态范围的 PQ AVIF 格式。需注意该工具依赖一个旧版的pillow_heif
库进行导出,因为新版Pillow已原生支持AVIF,因而第三方插件已不再支持。如果您觉得旧版pillow_heif里的库版本都较低,可以参考我Fork的版本pillow_heif_avif,当前有Windows的wheel包可用。
如果您已将上一章节的示例图片保存到相册,并在支持的设备(如含有XDR标识的iPhone/iPad Pro/Mac)上查看,就能观察到真实的HDR高光效果。若在浏览器中无法分辨,请务必将其存入系统相册查看。
最后,好消息是视频的HDR处理要简单一些。无论是原始录制的视频还是Live Photo附带的MOV,其杜比视界(Dolby Vision)HDR信息已能被新版FFmpeg很好地解析和保留,转换过程通常无需特殊干预。
照片库压缩
基于上述对Live Photo和HDR等特性的完整解决方案,我们可以进一步实现工程化的照片库压缩流程。具体的实现细节与代码可参考MediaConverter项目。通过该转换流程,我的照片库占用空间从原有的约300GB大幅缩减至约40GB,在Mac上导入并启用iCloud同步后,包括iPhone在内的Apple设备都能离线访问画质姑且能看的全量照片库。若需访问原始文件,仍可随时从Synology Photos中获取。
未来工作
目前整个转换流程仍需手动操作,包括触发转换、删除原图及导入压缩版本,尚未实现自动化。未来计划探索利用iCloud相关API,实现在NAS端完成自动触发压缩转换、删除原文件并导入新文件的完整流程,使整个流程对用户无感,进一步提升体验。