Qualcuno ha capito come estrarre la parte video da una Live Photo? Sto lavorando a un'app per convertire le Foto dal vivo in una GIF e il primo passo è ottenere il file video dalla Live Photo. Sembra che dovrebbe essere possibile, perché se colleghi il tuo telefono a un Mac puoi vedere l'immagine separata e i file video. Mi sono imbattuto in un muro di mattoni nel processo di estrazione, e ho provato molti modi per farlo e falliscono tutti.Estrai parte video da Live Photo
La prima cosa che ho fatto è stato ottenere una PHAsset per quello che penso sia la parte video del Live Photo, effettuando le seguenti operazioni:
if let livePhoto = info["UIImagePickerControllerLivePhoto"] as? PHLivePhoto {
let assetResources = PHAssetResource.assetResourcesForLivePhoto(livePhoto)
for assetRes in assetResources {
if (assetRes.type == .PairedVideo) {
let assets = PHAsset.fetchAssetsWithLocalIdentifiers([assetRes.assetLocalIdentifier], options: nil)
if let asset = assets.firstObject as? PHAsset {
Per convertire il PHAsset a un AVAsset ho provato:
asset.requestContentEditingInputWithOptions(nil, completionHandler: { (contentEditingInput, info) -> Void in
if let url = contentEditingInput?.fullSizeImageURL {
let movieUrl = url.absoluteString + ".mov"
let avAsset = AVURLAsset(URL: NSURL(fileURLWithPath: movieUrl), options: nil)
debugPrint(avAsset)
debugPrint(avAsset.duration.value)
}
})
non credo che questo funziona perché la stampa di debug con l'duration.value dà 0. ho anche provato, senza l'aggiunta ".mov" e ancora non funziona.
Ho anche provato:
PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: { (avAsset, audioMix, info) -> Void in
debugPrint(avAsset)
})
E i debugPrint (avAsset) stampe nil modo che non funziona.
Ho paura che potrebbero aver reso impossibile farlo, sembra che vada in circolo perché sembra che il PHAsset che ho ottenuto sia ancora una Live Photo e non in realtà un video.
Questo funziona solo con 9.1, avere una soluzione più generale? – Idan
Le API specifiche di Live Photo sono state introdotte in iOS 9.1 – Hendrik