【发布时间】:2015-12-07 02:58:40
【问题描述】:
Apple 将在 iOS 9/iPhone 6s 中引入Live Photo。文件格式记录在哪里?
【问题讨论】:
标签: ios ios9 photokit phlivephoto
Apple 将在 iOS 9/iPhone 6s 中引入Live Photo。文件格式记录在哪里?
【问题讨论】:
标签: ios ios9 photokit phlivephoto
实时照片有两个资源。它们与资产标识符(UUID 作为字符串)绑定在一起。
kCGImagePropertyMakerAppleDictionary 和 [17 : assetIdentifier] 的元数据条目(17 是 Apple Maker Note Asset Identifier 键)。["com.apple.quicktime.content.identifier" : assetIdentifier] 的顶级 Quicktime 元数据条目。如果使用AVAsset,您可以从asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata) 获得此信息
["com.apple.quicktime.still-image-time" : 0xFF]的定时元数据轨道;实际静止图像时间与此元数据项的呈现时间戳相匹配。有效负载似乎只是一个 0xFF 字节(又名 -1),可以忽略。如果使用AVAssetReader,您可以使用CMSampleBufferGetOutputPresentationTimeStamp 来获取这个时间。assetIdentifier 将这两个项目联系在一起,定时元数据轨道告诉系统静止图像在电影时间轴中的位置。
【讨论】:
这是link。否则,这是文本:
实况照片
Live Photos 是 iOS 9 的一项新功能,它允许用户捕捉和 以比传统更丰富的背景重温他们最喜欢的时刻 相片。当用户按下快门按钮时,相机应用程序 捕获更多内容以及常规照片,包括 照片前后的音频和附加帧。浏览时 通过这些照片,用户可以与他们互动并回放所有 捕捉到的内容,让照片变得栩栩如生。
iOS 9.1 引入了 API,允许应用程序合并播放 实时照片,以及导出数据以供共享。有新的 在 Photos 框架中支持从 PHImageManager 对象,用于表示所有的数据 包括一张实况照片。您可以使用 PHLivePhotoView 对象(定义 在 PhotosUI 框架中)来显示 Live Photo 的内容。 PHLivePhotoView 视图负责显示图像、处理 所有用户交互,并应用视觉处理来回放 内容。
您还可以使用 PHAssetResource 访问 PHLivePhoto 的数据 用于共享目的的对象。您可以请求一个 PHLivePhoto 对象 使用 PHImageManager 或 UIImagePickerController。如果您有共享扩展程序,您还可以 使用 NSItemProvider 获取 PHLivePhoto 对象。在接收方 共享,您可以从集合中重新创建一个 PHLivePhoto 对象 最初由发件人导出的文件。
实时照片显示指南
请务必记住,实时照片仍然是照片。如果您必须在 不支持PHLivePhotoView的环境,推荐 您将其作为普通照片呈现。
不要单独显示 Live Photo 的额外帧和音频。 重要的是实时照片的内容以 使用相同视觉处理和交互的一致方式 所有应用中的模型。
建议您通过将照片识别为实时照片 PHLivePhotoView 类方法提供的徽章 livePhotoBadgeImageWithOptions:PHLivePhotoBadgeOptionsOverContent 中 照片的左上角。
请注意,不支持提供以下视觉效果 用户在“照片”应用中滑动浏览照片时的体验。
实况照片分享指南
Live Photo 的数据是 导出为 PHAssetResource 对象中的一组文件。该组 将文件上传到服务器时,必须将它们作为一个单元保存。 当您在接收端使用这些文件重建 PHLivePhoto 时, 文件经过验证;如果文件不是来自,则加载失败 相同的资产。
如果您的应用之前允许用户对照片应用效果或调整 共享它,请务必对所有框架应用相同的调整 实况照片。或者,如果您不支持调整整个 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
*
*
*/
【讨论】:
kUTTypeLivePhoto 符合什么标准? UTTypeCopyDeclaration(kUTTypeLivePhoto) 说它不符合任何人。好像有点奇怪。
com.apple.quicktime-movie 有什么关系? com.apple.live-photo 是否同时包含静止图像(例如 png 或 jpeg)和电影?
一些关于实时照片的附加信息:
【讨论】: