AppleはiOS 9/iPhone 6sで Live Photo を導入します。ファイル形式はどこに文書化されていますか?
リンク です。それ以外の場合、テキストは次のとおりです。
ライブ写真
Live PhotosはiOS 9の新機能であり、ユーザーは従来の写真よりも豊かなコンテキストでお気に入りの瞬間をキャプチャして再現できます。ユーザーがシャッターボタンを押すと、カメラアプリは、写真の前後にオーディオや追加のフレームを含む、通常の写真とともにより多くのコンテンツをキャプチャします。これらの写真を閲覧する際、ユーザーはそれらの写真を操作し、キャプチャしたすべてのコンテンツを再生して、写真を生き生きとさせることができます。
iOS 9.1には、アプリがライブ写真の再生を組み込んだり、共有のためにデータをエクスポートしたりできるAPIが導入されています。 Photosフレームワークには、PHImageManagerオブジェクトからPHLivePhotoオブジェクトを取得する新しいサポートがあります。これは、Live Photoを構成するすべてのデータを表すために使用されます。 PHPhotoPhotoViewオブジェクト(PhotosUIフレームワークで定義)を使用して、Live Photoのコンテンツを表示できます。 PHLivePhotoViewビューは、画像の表示、すべてのユーザーインタラクションの処理、およびコンテンツの再生のための視覚的処理の適用を処理します。
PHAssetResourceを使用して、共有のためにPHLivePhotoオブジェクトのデータにアクセスすることもできます。 PHImageManagerまたはUIImagePickerControllerを使用して、ユーザーの写真ライブラリ内のアセットのPHLivePhotoオブジェクトをリクエストできます。共有拡張機能がある場合は、NSItemProviderを使用してPHLivePhotoオブジェクトを取得することもできます。共有の受信側では、送信者が最初にエクスポートした一連のファイルからPHLivePhotoオブジェクトを再作成できます。
ライブ写真を表示するためのガイドライン
ライブ写真はまだ写真であることを覚えておくことが重要です。 PHLivePhotoViewをサポートしていない環境でライブ写真を表示する必要がある場合は、通常の写真として提示することをお勧めします。
ライブ写真の余分なフレームと音声を別々に表示しないでください。 Live Photoのコンテンツは、すべてのアプリで同じ視覚的処理と相互作用モデルを使用する一貫した方法で表示されることが重要です。
PHLivePhotoViewクラスメソッドlivePhotoBadgeImageWithOptions:PHLivePhotoBadgeOptionsOverContentによって提供されるバッジを写真の左上隅に配置して、写真をライブ写真として識別することをお勧めします。
ユーザーが写真アプリで写真をスワイプするときに体験する視覚効果の提供はサポートされていないことに注意してください。
ライブ写真を共有するためのガイドライン
ライブ写真のデータは、PHAssetResourceオブジェクトのファイルのセットとしてエクスポートされます。ファイルのセットは、サーバーにアップロードするときにユニットとして保存する必要があります。これらのファイルを使用して受信側でPHLivePhotoを再構築すると、ファイルが検証されます。ファイルが同じアセットからのものでない場合、読み込みは失敗します。
アプリでユーザーが写真を共有する前に効果や調整を適用できる場合は、必ず同じ調整をライブ写真のすべてのフレームに適用してください。または、ライブ写真のコンテンツ全体の調整をサポートしていない場合は、通常の写真として共有し、適切な指示をユーザーに表示します。
アプリに共有する写真を選択するためのUIがある場合は、ユーザーがコンテンツ全体を再生できるようにして、共有しているものを正確に把握する必要があります。アプリで共有する写真を選択する場合、ユーザーはライブ写真をオフにすることもできます。そのため、従来の写真として投稿できます。
ライブ写真には2つのリソースがあります。それらは資産識別子(文字列としてのUUID)で結び付けられています。
kCGImagePropertyMakerAppleDictionary
with _[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
は、2つのアイテムを結び付けるものであり、時間指定されたメタデータトラックは、静止画像が映画タイムラインのどこにあるかをシステムに伝えるものです。
ドキュメント以外では、Live Photosは2つのリソース、画像とmov(クイックムービーファイル)で構成されています。したがって、すべてのLive Photoには、Live Photoタイプのラッパーで接続された2つの「実際の」ファイルがあります。
形式のUniform Type Identifier(UTI)はkUTTypeLivePhoto
/com.Apple.live-photo
@available(OSX 10.12, *)
public let kUTTypeLivePhoto: CFString
/*
*
* kUTTypeLivePhoto
*
* Live Photo
*
* UTI: com.Apple.live-photo
*
*
*/
Live Photosは実際には2つのファイルです。オリジナルのJPEG画像とフルHDビデオ。