Apple 将在 iOS 9/iPhone 6s 中引入Live Photo 。文件格式记录在哪里?
6 回答
实时照片有两个资源。它们与资产标识符(UUID 作为字符串)绑定在一起。
- 一个JPEG;这必须有一个
kCGImagePropertyMakerAppleDictionary
with的元数据条目[17 : assetIdentifier]
(17 是 Apple Maker Note Asset Identifier 键)。 - 以适当的帧速率 (12-15fps) 和大小 (1080p) 使用 H.264 编码的 Quicktime MOV。此 MOV 必须具有:
- 的顶级 Quicktime 元数据条目
["com.apple.quicktime.content.identifier" : assetIdentifier]
。如果使用AVAsset
你可以从asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata)
["com.apple.quicktime.still-image-time" : 0xFF]
带;的定时元数据轨道 实际静止图像时间与此元数据项的呈现时间戳相匹配。有效负载似乎只是一个0xFF
字节(又名 -1),可以忽略。如果使用AVAssetReader
你可以使用CMSampleBufferGetOutputPresentationTimeStamp
来获得这个时间。
- 的顶级 Quicktime 元数据条目
这assetIdentifier
是将这两个项目联系在一起的原因,而定时元数据轨道告诉系统静止图像在电影时间轴中的位置。
这是链接。否则,这里是文本:
实况照片
Live Photos 是 iOS 9 的一项新功能,它允许用户以比传统照片更丰富的背景来捕捉和重温他们最喜爱的时刻。当用户按下快门按钮时,相机应用程序会捕获更多内容以及常规照片,包括照片前后的音频和附加帧。在浏览这些照片时,用户可以与它们进行交互并回放所有捕获的内容,使照片变得栩栩如生。
iOS 9.1 引入了 API,允许应用程序合并实时照片的播放,以及导出数据以进行共享。Photos 框架中新增了从 PHImageManager 对象获取 PHLivePhoto 对象的支持,该对象用于表示构成 Live Photo 的所有数据。您可以使用 PHLivePhotoView 对象(在 PhotosUI 框架中定义)来显示 Live Photo 的内容。PHLivePhotoView 视图负责显示图像、处理所有用户交互以及应用视觉处理来播放内容。
您还可以使用 PHAssetResource 访问 PHLivePhoto 对象的数据以进行共享。您可以使用 PHImageManager 或 UIImagePickerController 为用户照片库中的资产请求 PHLivePhoto 对象。如果你有共享扩展,你也可以通过使用 NSItemProvider 来获取 PHLivePhoto 对象。在共享的接收方,您可以从发送方最初导出的文件集中重新创建 PHLivePhoto 对象。
显示实况照片的准则
重要的是要记住实时照片仍然是照片。如果您必须在不支持 PHLivePhotoView 的环境中显示 Live Photo,建议您将其作为普通照片呈现。
不要单独显示 Live Photo 的额外帧和音频。Live Photo 的内容必须以一致的方式呈现,在所有应用程序中使用相同的视觉处理和交互模型。
建议您通过将 PHLivePhotoView 类方法 livePhotoBadgeImageWithOptions:PHLivePhotoBadgeOptionsOverContent 提供的徽章放在照片的左上角,将照片识别为 Live Photo。
请注意,不支持提供用户在“照片”应用中轻扫照片时所体验到的视觉效果。
共享实况照片指南
Live Photo 的数据导出为 PHAssetResource 对象中的一组文件。将文件集上传到服务器时,必须将它们作为一个单元保留。当您在接收方使用这些文件重建 PHLivePhoto 时,这些文件将被验证;如果文件不是来自同一资产,则加载失败。
如果您的应用程序允许用户在共享照片之前对其应用效果或调整,请务必对 Live Photo 的所有帧应用相同的调整。或者,如果您不支持调整 Live Photo 的全部内容,请将其作为普通照片共享并向用户显示适当的指示。
如果您的应用具有用于选择要分享的照片的 UI,您应该让用户回放整个内容,以便他们确切地知道他们在分享什么。在您的应用中选择要分享的照片时,用户还应该能够关闭实时照片,这样他们就可以将其作为传统照片发布。
在文档之外,Live Photos 由 2 个资源组成,一个图像和一个 mov(快速电影文件)。因此,每张 Live Photo 都有 2 个由 Live Photo 类型的包装器连接的“实际”文件。
Live Photos 实际上是两个文件。原始 JPEG 图像和全高清视频。
格式的统一类型标识符 (UTI) 是kUTTypeLivePhoto
/com.apple.live-photo
@available(OSX 10.12, *)
public let kUTTypeLivePhoto: CFString
/*
*
* kUTTypeLivePhoto
*
* Live Photo
*
* UTI: com.apple.live-photo
*
*
*/
有关实时照片的一些附加信息:
- 同意,它有 .mov 文件扩展名
- 它与 jpg 版本的照片一起保存在目录 /var/mobile/media/DCIM/100apple/ 中
- 实时照片甚至可以在没有 3D 触摸的设备上播放(我可以通过长按照片在我的 ipad 2017 上播放)
- 如果您安装了 PhotosLive 插件,它甚至可以在旧手机(例如 iphone 5)上播放,甚至可以在 iOS8 上播放