2015-09-10 14 views

risposta

16

Ecco lo link. In caso contrario, ecco il testo:

foto dal vivo

Foto dal vivo è una nuova funzionalità di iOS 9 che consente agli utenti di catturare e rivivere i loro momenti preferiti con il contesto più ricco di tradizionali foto. Quando l'utente preme il pulsante di scatto, l'app Fotocamera acquisisce molti più contenuti insieme alla foto normale, incluso l'audio e i fotogrammi aggiuntivi prima e dopo la foto. Quando navighi su attraverso queste foto, gli utenti possono interagire con loro e riprodurre tutti i contenuti catturati, rendendo le foto prendere vita.

iOS 9.1 introduce API che consentono alle app di incorporare la riproduzione di Live Photos, nonché di esportare i dati per la condivisione. È disponibile il nuovo supporto nel framework Photos per recuperare un oggetto PHLivePhoto dall'oggetto PHImageManager, che viene utilizzato per rappresentare tutti i dati che comprende una Live Photo. È possibile utilizzare un oggetto PHLivePhotoView (definito nel framework PhotosUI) per visualizzare i contenuti di una Live Photo. La vista PHLivePhotoView si occupa della visualizzazione dell'immagine, della gestione di dell'interazione utente e dell'applicazione dei trattamenti visivi per riprodurre il contenuto .

È inoltre possibile utilizzare PHAssetResource per accedere ai dati di un oggetto PHLivePhoto a scopo di condivisione. Puoi richiedere un oggetto PHLivePhoto per una risorsa nella libreria fotografica dell'utente utilizzando PHImageManager o UIImagePickerController. Se si dispone di un'estensione di condivisione, è possibile anche ottenere oggetti PHLivePhoto utilizzando NSItemProvider. Sul lato ricevente di una condivisione, è possibile ricreare un oggetto PHLivePhoto dal set di file originariamente esportati dal mittente.

Linee guida per la visualizzazione in diretta Foto

E 'importante ricordare che delle foto dal vivo è ancora una foto. Se devi visualizzare una Foto in diretta in in un ambiente che non supporta PHLivePhotoView, si consiglia di di presentarla come una normale foto.

Non visualizzare i frame e l'audio extra di una Live Photo separatamente. È importante che il contenuto della Live Photo sia presentato in un modo coerente che utilizzi lo stesso modello di trattamento visivo e interazione in tutte le app.

Si raccomanda di identificare una foto come Live Photo posizionando il badge fornito dal metodo della classe PHLivePhotoView livePhotoBadgeImageWithOptions: PHLivePhotoBadgeOptionsOverContent nel nell'angolo in alto a sinistra della foto.

Nota che non esiste alcun supporto per fornire l'effetto visivo degli utenti di mentre passano attraverso le foto nell'app Foto.

Linee guida per la condivisione di foto live

i dati di un Live Photo è esportati come un insieme di file in un oggetto PHAssetResource. Il set di file deve essere conservato come un'unità quando si caricano su un server. Quando si ricostruisce un PHLivePhoto con questi file sul lato ricevitore, i file vengono convalidati; il caricamento non riesce se i file non provengono da stesso asset.

Se l'app consente agli utenti di applicare effetti o regolazioni a una foto prima della condivisione di , assicurarsi di applicare le stesse regolazioni a tutti i fotogrammi della foto diretta . In alternativa, se non si supporta la regolazione dell'intero contenuto di di una Live Photo, condividerla come una normale foto e mostrare all'utente un'indicazione appropriata .

Se la vostra applicazione ha interfaccia utente per la raccolta di foto da condividere, si dovrebbe consentire agli utenti di riprodurre l'intero contenuto in modo da sapere esattamente che cosa sono sharing.When Selezione delle foto da condividere nella vostra app, gli utenti dovrebbero essere in grado anche per disattivare una Live Photo, in modo che possano postarla come una tradizionale foto .

3

Al di fuori della documentazione, le foto in diretta sono costituite da 2 risorse, un'immagine e un mov (file filmato quicktime). Quindi ogni Live Photo ha 2 file "reali" collegati dal wrapper del tipo Live Photo.

1

Live Photos è in realtà due file. Immagine JPEG originale e video Full HD.

37

Una foto dal vivo ha due risorse. Sono legati insieme a un identificatore di asset (un UUID come stringa).

  1. A JPEG; questo deve avere una voce di metadati per kCGImagePropertyMakerAppleDictionary con [17 : assetIdentifier] (17 è la chiave di identificazione asset nota di Apple Maker).
  2. Un Quicktime MOV codificato con H.264 al framerate appropriato (12-15fps) e alla dimensione (1080p). Questo MOV deve avere:
    • Voce di metadati Quicktime di livello superiore per ["com.apple.quicktime.content.identifier" : assetIdentifier]. Se si utilizza AVAsset è possibile ottenere questo da asset.metadataForFormat(AVMetadataFormatQuickTimeMetadata)
    • Timed traccia metadati con ["com.apple.quicktime.still-image-time" : 0xFF]; Il tempo reale dell'immagine fissa corrisponde al timestamp della presentazione per questo elemento metadati. Il carico utile sembra essere solo un singolo byte 0xFF (ovvero -1) e può essere ignorato. Se si utilizza un AVAssetReader è possibile utilizzare CMSampleBufferGetOutputPresentationTimeStamp per ottenere questa volta.

Il assetIdentifier è ciò che lega i due elementi insieme e la pista metadati temporizzato è ciò che dice al sistema in cui il fermo immagine si trova nella timeline film.

+0

Un'implementazione di scrivere tali file può essere trovato qui: https: // GitHub.com/genadyo/LivePhotoDemo – jtbandes

+0

È ancora così su iOS 11 quando si creano file HEIC o la parte film è racchiusa nello stesso file .heic della parte fotografica? – jl6

1

Uniform Type Identifier (UTI) per il formato è kUTTypeLivePhoto/com.apple.live-photo

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

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

A cosa si conforma 'kUTTypeLivePhoto'? 'UTTypeCopyDeclaration (kUTTypeLivePhoto)' dice che non è conforme a nessuno. Sembra un po 'strano. –

Problemi correlati