Apple présentera Live Photo dans iOS 9/iPhone 6s. Où le format de fichier est-il documenté?
Voici le lien . Sinon, voici le texte:
Photos en direct
Live Photos est une nouvelle fonctionnalité d'iOS 9 qui permet aux utilisateurs de capturer et de revivre leurs moments préférés dans un contexte plus riche que les photos traditionnelles. Lorsque l'utilisateur appuie sur le déclencheur, l'application Appareil photo capture beaucoup plus de contenu avec la photo normale, y compris le son et les images supplémentaires avant et après la photo. En parcourant ces photos, les utilisateurs peuvent interagir avec eux et lire tout le contenu capturé, donnant vie aux photos.
iOS 9.1 présente des API qui permettent aux applications d'incorporer la lecture de Live Photos, ainsi que d'exporter les données pour le partage. Il existe une nouvelle prise en charge dans le cadre Photos pour récupérer un objet PHLivePhoto à partir de l'objet PHImageManager, qui est utilisé pour représenter toutes les données qui composent une photo en direct. Vous pouvez utiliser un objet PHLivePhotoView (défini dans le cadre PhotosUI) pour afficher le contenu d'une photo en direct. La vue PHLivePhotoView prend soin d'afficher l'image, de gérer toutes les interactions de l'utilisateur et d'appliquer les traitements visuels pour lire le contenu.
Vous pouvez également utiliser PHAssetResource pour accéder aux données d'un objet PHLivePhoto à des fins de partage. Vous pouvez demander un objet PHLivePhoto pour un élément dans la photothèque de l'utilisateur à l'aide de PHImageManager ou UIImagePickerController. Si vous avez une extension de partage, vous pouvez également obtenir des objets PHLivePhoto en utilisant NSItemProvider. Du côté de la réception d'un partage, vous pouvez recréer un objet PHLivePhoto à partir de l'ensemble de fichiers initialement exportés par l'expéditeur.
Instructions pour l'affichage des photos en direct
Il est important de se rappeler qu'une Live Photo est toujours une photo. Si vous devez afficher une photo en direct dans un environnement qui ne prend pas en charge PHLivePhotoView, il est recommandé de la présenter comme une photo standard.
N'affichez pas séparément les images supplémentaires et l'audio d'une Live Photo. Il est important que le contenu de la Live Photo soit présenté de manière cohérente en utilisant le même traitement visuel et le même modèle d'interaction dans toutes les applications.
Il est recommandé d'identifier une photo en tant que photo en direct en plaçant le badge fourni par la méthode de classe PHLivePhotoView livePhotoBadgeImageWithOptions: PHLivePhotoBadgeOptionsOverContent dans le coin supérieur gauche de la photo.
Notez qu'il n'y a pas de prise en charge pour fournir l'effet visuel que les utilisateurs ressentent lorsqu'ils parcourent les photos dans l'application Photos.
Instructions pour le partage de photos en direct
Les données d'une Live Photo sont exportées sous forme d'un ensemble de fichiers dans un objet PHAssetResource. L'ensemble de fichiers doit être conservé en tant qu'unité lorsque vous les téléchargez sur un serveur. Lorsque vous reconstruisez un PHLivePhoto avec ces fichiers côté récepteur, les fichiers sont validés; le chargement échoue si les fichiers ne proviennent pas du même élément.
Si votre application permet aux utilisateurs d'appliquer des effets ou des ajustements à une photo avant de la partager, veillez à appliquer les mêmes ajustements à tous les cadres de la photo en direct. Sinon, si vous ne prenez pas en charge l'ajustement de l'intégralité du contenu d'une photo en direct, partagez-la en tant que photo standard et affichez une indication appropriée pour l'utilisateur.
Si votre application dispose d'une interface utilisateur pour sélectionner des photos à partager, vous devez laisser les utilisateurs lire l'intégralité du contenu afin qu'ils sachent exactement ce qu'ils partagent.Lorsque vous sélectionnez des photos à partager dans votre application, les utilisateurs doivent également pouvoir désactiver une photo en direct, afin qu'ils puissent l'afficher en tant que photo traditionnelle.
Une photo en direct a deux ressources. Ils sont liés avec un identifiant d'actif (un UUID sous forme de chaîne).
kCGImagePropertyMakerAppleDictionary
avec [17 : assetIdentifier]
(17 est la clé Apple Maker Note Asset Identifier Key)).["com.Apple.quicktime.content.identifier" : assetIdentifier]
. Si vous utilisez AVAsset
, vous pouvez l'obtenir à partir de asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata)
["com.Apple.quicktime.still-image-time" : 0xFF]
; L'heure réelle de l'image fixe correspond à l'horodatage de la présentation de cet élément de métadonnées. La charge utile ne semble être qu'un seul octet 0xFF
(Aka -1) et peut être ignorée. Si vous utilisez un AVAssetReader
, vous pouvez utiliser CMSampleBufferGetOutputPresentationTimeStamp
pour obtenir cette heure.Le assetIdentifier
est ce qui relie les deux éléments ensemble et la piste de métadonnées chronométrées est ce qui indique au système où l'image fixe se trouve dans la chronologie du film.
En dehors de la documentation, les Live Photos sont composées de 2 ressources, une image et un mov (fichier vidéo quicktime). Ainsi, chaque Live Photo a 2 fichiers "réels" connectés par le wrapper du type Live Photo.
L'identifiant de type uniforme (UTI) pour le format est kUTTypeLivePhoto
/com.Apple.live-photo
@available(OSX 10.12, *)
public let kUTTypeLivePhoto: CFString
/*
*
* kUTTypeLivePhoto
*
* Live Photo
*
* UTI: com.Apple.live-photo
*
*
*/
Live Photos est en fait deux fichiers. Image JPEG d'origine et vidéo Full HD.