2015-09-10 8 views

Antwort

16

Hier ist die link. Ansonsten ist hier der Text:

Live-Fotos

Live-Fotos ist ein neues Feature von iOS 9, mit dem Benutzer zu erfassen und erleben ihre Lieblingsmomente mit reichem Kontext als traditionelle Fotos. Wenn der Benutzer den Auslöser drückt, erfasst die Kamera App viel mehr Inhalt zusammen mit dem normalen Foto, einschließlich Audio und zusätzliche Bilder vor und nach dem Foto. Wenn Sie diese Fotos durchsuchen, können die Benutzer mit ihnen interagieren und alle aufgenommenen Inhalte abspielen und die Fotos zum Leben erwecken.

iOS 9.1 führt APIs ein, mit denen Apps die Wiedergabe von Live-Fotos ermöglichen und die Daten zur gemeinsamen Nutzung exportieren können. Es gibt eine neue Unterstützung im Photos-Framework, um ein PHLivePhoto-Objekt aus dem PHImageManager-Objekt zu holen, das zur Darstellung aller Daten dient, die ein Live-Foto enthält. Sie können ein PLEivePhotoView-Objekt verwenden ( im PhotosUI-Framework definiert), um den Inhalt eines Live-Fotos anzuzeigen. Die Ansicht "PHLivePhotoView" sorgt dafür, dass das Bild angezeigt wird, alle Benutzerinteraktionen gehandhabt werden und dass die visuellen Behandlungen angewendet werden, um den Inhalt wiederzugeben .

Sie können auch PHAssetResource verwenden, um auf die Daten eines PHLivePhoto Objekts für gemeinsame Zwecke zuzugreifen. Sie können ein PHLivePhoto-Objekt für ein Asset in der Fotobibliothek des Benutzers anfordern, indem Sie PHImageManager oder UIImagePickerController verwenden. Wenn Sie eine Freigabeerweiterung haben, können Sie auch PHLivePhoto-Objekte mithilfe von NSItemProvider abrufen. Auf der Empfangsseite einer Freigabe können Sie ein PLEivePhoto-Objekt aus der ursprünglich vom Absender exportierten Gruppe von -Dateien neu erstellen.

Richtlinien für die Live-Bilder

angezeigte Es ist wichtig, sich daran zu erinnern, dass ein Live Photo ist immer noch ein Foto. Wenn Sie in ein Live-Foto in einer Umgebung anzeigen müssen, die PHLivePhotoView nicht unterstützt, wird empfohlen, dass Sie es als normales Foto präsentieren ( ).

Die zusätzlichen Bilder und den Ton eines Live-Fotos nicht separat anzeigen. Es ist wichtig, dass der Inhalt des Live-Fotos in einer konsistenten Weise präsentiert wird, die das gleiche visuelle Behandlungs- und Interaktionsmodell in allen Apps verwendet.

Es wird empfohlen, dass Sie, indem das Abzeichen zur Verfügung gestellt von der PHLivePhotoView Klassenmethode livePhotoBadgeImageWithOptions ein Foto als Live Photo zu identifizieren: PHLivePhotoBadgeOptionsOverContent in die linke obere Ecke des Fotos.

Beachten Sie, dass keine Unterstützung für die Bereitstellung des visuellen Effekts besteht, den die Benutzer beim Durchblättern von Fotos in der Fotos-App erleben.

Richtlinien für die Freigabe Live Photos

Die Daten eines Live Photo ist als eine Reihe von Dateien in einem PHAssetResource Objekt exportiert. Der Satz von Dateien muss als eine Einheit erhalten werden, wenn Sie sie auf einen Server hochladen. Wenn Sie ein PHLivePhoto mit diesen Dateien auf der Empfängerseite erstellen, werden die Dateien validiert; Das Laden schlägt fehl, wenn die Dateien nicht von demselben Asset stammen.

Wenn Ihre App es Benutzern ermöglicht, Effekte oder Anpassungen auf ein Foto anzuwenden, bevor sie freigegeben werden, müssen Sie die gleichen Einstellungen auf alle Bilder des Live-Fotos anwenden. Alternativ, wenn Sie nicht die gesamte Inhalt eines Live-Foto anpassen, teilen Sie es als ein normales Foto und zeigen Sie eine entsprechende Anzeige für den Benutzer.

Wenn Ihre App UI hat Fotos für die Kommissionierung zu teilen, sollten Sie lassen Benutzer den gesamten Inhalt wiedergeben, so dass sie genau wissen, was sie sind sharing.When Auswahl der Fotos in Ihrer App zu teilen, sollten Benutzer auch in der Lage sein, um ein Live-Foto auszuschalten, damit es als traditionelles Foto gepostet werden kann.

3

Außerhalb der Dokumentation bestehen Live-Fotos aus 2 Ressourcen, einem Bild und einem mov (Quicktime-Filmdatei). So hat jedes Live Photo 2 'tatsächliche' Dateien, die durch den Wrapper des Live Photo-Typs verbunden sind.

1

Live-Fotos sind eigentlich zwei Dateien. Original JPEG Bild und Full HD Video.

37

Ein Live-Foto hat zwei Ressourcen. Sie sind mit einer Asset-ID (einer UUID als Zeichenfolge) verknüpft.

  1. Ein JPEG; Dies muss für kCGImagePropertyMakerAppleDictionary mit [17 : assetIdentifier] (17 ist der Apple-Maker Note Asset-Kennung key) einen Metadateneintrag hat.
  2. Quicktime MOV mit H.264 an der entsprechenden Bildrate (12-15fps) und Größe (1080p) kodiert. Dieser MOV muss folgende Werte haben:
    • Quicktime-Metadateneintrag der obersten Ebene für ["com.apple.quicktime.content.identifier" : assetIdentifier]. Wenn AVAsset verwenden, können Sie diese von asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata)
    • Timed Metadaten Track mit ["com.apple.quicktime.still-image-time" : 0xFF] erhalten; Die tatsächliche Standbildzeit stimmt mit dem Präsentationszeitstempel für dieses Metadatenelement überein. Die Payload scheint nur ein einzelnes 0xFF Byte (alias -1) zu sein und kann ignoriert werden. Wenn Sie AVAssetReader verwenden, können Sie CMSampleBufferGetOutputPresentationTimeStamp verwenden, um diese Zeit zu erhalten.

Die assetIdentifier ist das, was die beiden Elemente miteinander verbindet und die zeitlich abgestimmten Metadatenspur ist, was das System sagt, wo das Standbild in der Film-Zeitleiste sitzt.

+0

Eine Implementierung solcher Dateien zu schreiben, finden Sie hier: https: // GitHub.com/genadyo/LivePhotoDemo – jtbandes

+0

Ist dies immer noch der Fall bei iOS 11 beim Erstellen von HEIC-Dateien, oder ist der Filmteil in derselben .heic-Datei wie der Fototeil verpackt? – jl6

1

Uniform Type Identifier (UTI) für das Format ist kUTTypeLivePhoto/com.apple.live-photo

@available(OSX 10.12, *) 
public let kUTTypeLivePhoto: CFString 

/* 
* 
* kUTTypeLivePhoto 
* 
* Live Photo 
* 
* UTI: com.apple.live-photo 
* 
* 
*/ 
+0

Was entspricht 'kUTTypeLivePhoto'? 'UTTypeCopyDeclaration (kUTTypeLivePhoto)' sagt, es entspricht niemandem. Es scheint ein bisschen seltsam. –