Live Photo 这段时间风靡全网,安卓品牌以及各大社交软件都加入了对其的支持。不少人觉得Live Photo就是拍照的同时多录了一段视频。但其实远比一段视频更为复杂。
首先显而易见的是,Live Photo的开始时间是早于按下快门的时间的,也就是说相机需要缓存过去2-3s的视频帧。

另外,Live Photo的主图位置,并不总在视频中间。其实苹果在相机中还在实时检测加速度的变化,如果发现加速度大于一定阈值,就会提前触发Live Photo保存,这也就避免当你按下快门后立刻收起了手机,Live Photo里录到那些无意义的画面。
Live Photo保存之后,苹果又为其加入了更多维度的数据。相机内会实时运行一套Live Photo打分机制,来区分实况中的是一动不动的文档,还是藏着另一个精彩瞬间,用在相册的智能推荐中。
并且相机会自动判断在你滑动浏览照片时,是否应该触发Live Photo前半段的自动播放。例如如果你拍摄的是文档,相册中的Live Photo开关就会自动关闭。

而这些数据都隐藏在Live Photo视频的全局元数据中。
另外一个细节是,相机的预览是没有防抖的,但拍出来的视频却特别稳定,也就是Live Photo在合成时还要跑一遍增稳算法。
但如果你用过剪辑软件的防抖效果的话,你就会发现它对性能的要求很高,并且很慢。具体流程如下:
- 扫描视频片段的每一帧,提取画面中所有可用的特征点
- 使用特征匹配找到相邻帧中对应的特征点
- 构建出画面每个特征点的屏幕运动轨迹并得出整个画面的运动数据
- 利用平滑算法对轨迹进行平滑,并生成每个帧所需要的变换矩阵
- 在视频帧上应用变换
而对Live Photo这种对实时性要求很高,算力限制严格的场景,苹果还有秘密武器。在视频中,每一帧都有单独的元数据,记录了相机的加速度,角速度等位移数据。有了这些数据,再加上固定的镜头内参,可以做到不需要对每个视频帧进行分析,就能够得出运动轨迹。不仅减少了运算所需要的时间,还能够获得更好的效果。
不过防抖裁切带来的另一个问题,就是拍摄的主图和视频的取景范围不一样了。在播放结束时,如果直接从视频切到主图,就无法实现完美的位置匹配,而是会出现瞬移效果。这里苹果还单独生成了视频相对主图的透视变换矩阵。这样当视频播放结束时,就可以按照这个透视矩阵将视频完美贴合在主图的对应位置上。

iPhone 16 摄影风格的推出,更是将Live Photo又提升到了一个新的高度。
苹果在一个mov文件中直接封装了6个视频!

这里我们使用ffmpeg将五条视频分别输出可以看到六条视频分别是:
- 主视频
- 低分辨率缩略图(作用未知)
- 天空蒙版
- 人物蒙版
- 皮肤蒙版
- 10-bit 补充色彩信息

并且,在视频的每一帧,都有2KB的摄影风格元数据,用于辅助摄影风格的调整。

可以说苹果将计算摄影,完全融会贯通在了所有的流程当中。而这就是将科技隐于无形的完美诠释,而且不要忘了,以上的技术,是苹果早在11年前的iPhone 6s上发布的,让人不禁感叹曾经苹果研发能力的恐怖以及对细节的执着追求。
其实不仅是Live Photo,苹果在HEIF格式上的HDR,人像模式,摄影风格也隐藏着不少技术细节。下期我们就来聊聊,如果你也想了解的话别忘了点个关注。
最后,为了方便各位理解,附上视频版: