gpt4 book ai didi

ios - 从 Live Photo 中提取视频部分

转载 作者:可可西里 更新时间:2023-11-01 03:28:00 29 4
gpt4 key购买 nike

有没有人知道如何从 Live Photo 中提取视频部分?我正在开发一个将实时照片转换为 GIF 的应用程序,第一步是从实时照片中获取视频文件。看起来应该是可行的,因为如果将手机插入 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 似乎仍然是实时照片,而不是视频。

最佳答案

使用PHAssetResourceManagerPHAssetResource 获取视频文件。

PHAssetResourceManager.defaultManager().writeDataForAssetResource(assetRes, 
toFile: fileURL, options: nil, completionHandler:
{
// Video file has been written to path specified via fileURL
}

注意:Live Photo 特定的 API 是在 iOS 9.1 中引入的

关于ios - 从 Live Photo 中提取视频部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32959973/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com