Кто-нибудь понял, как извлечь видеоролик из Live Photo? Я работаю над приложением для преобразования Live Photos в GIF, и первым шагом является получение видеофайла из Live Photo. Похоже, это должно быть возможно, потому что если вы подключите свой телефон к Mac, вы можете увидеть отдельные изображения и видеофайлы. Я как-то столкнулся с кирпичной стеной в процессе извлечения, и я пробовал много способов сделать это, и все они терпят неудачу.Извлечь видеоролик из Live Photo
Первое, что я сделал получить PHAsset за то, что я думаю, что это видео часть Live Photo, выполнив следующие действия:
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 {
Чтобы преобразовать PHAsset к AVAsset я пробовал:
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)
}
})
Я не думаю, что это работает, потому что отладка печать с duration.value дает 0. Я также попробовал без «.mov» Кроме того, и это до сих пор не работает.
Я также попытался:
PHImageManager.defaultManager().requestAVAssetForVideo(asset, options: nil, resultHandler: { (avAsset, audioMix, info) -> Void in
debugPrint(avAsset)
})
И DebugPrint (avAsset) печатает нильполугруппы так это не работает.
Я боюсь, что они могли сделать это невозможным, кажется, что я собираюсь в круги, потому что кажется, что PHASset, который я получил, по-прежнему является Live Photo, а не на самом деле видео.
Это работает только с 9.1, имеет общее общее решение? – Idan
В iOS 9.1 были введены специфические API для Live Photo – Hendrik