ライブフォトからビデオ部分を抽出する方法を見つけた人はいますか? Live Photos を GIF に変換するアプリに取り組んでいます。最初のステップは、Live Photos からビデオ ファイルを取得することです。携帯電話を Mac に接続すると、画像と動画のファイルが別々に表示されるため、これは可能であるように思われます。抽出プロセスでレンガの壁にぶつかりました。それを行うために多くの方法を試しましたが、すべて失敗しました。
私が最初に行ったのは、次のようにして、Live Photo のビデオ部分であると思われる PHAsset を取得することでした。
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) は nil を出力するため、機能しません。
私が手に入れた PHAsset はまだ Live Photo であり、実際にはビデオではないように見えるので、彼らがそれを不可能にしたのではないかと心配しています。