iOS相册视频读取PHAsset到ALAsset转换

问题

iOS上传视频时从相册选择视频上传失败,错误是“视频文件不存在”。

排查过程

  • 相册读取出来的是PHAssert, 对视频文件返回系统相册中的路径地址(如:file:///var/mobile/Media/DCIM/100APPLE/IMG_0632.MOV),不可以直接访问。
  • 上传组件判断视频文件的方法是用ALAssetsLibrary 读取视频文件。

解决

将PHAssert转换为ALAssert格式的路径

//输入1:asset.localIdentifier 形如:A918D262-4915-4B4D-98DB-018A7D5860EE/L0/001
//输入2:asset.localURL 形如:file:///var/mobile/Media/DCIM/100APPLE/IMG_0632.MOV
            NSString *localID = asset.localIdentifier; 
            NSURL *url = asset.localURL;
            NSArray *temp = [localID componentsSeparatedByString:@"/"];
            NSString *uploadVideoFilePath = nil;
            if (temp.count > 0) {
                NSString *assetID = temp[0];
                NSString *ext = url.pathExtension;
                if (assetID && ext) {
                    uploadVideoFilePath = [NSString stringWithFormat:@"assets-library://asset/asset.%@?id=%@&ext=%@", ext, assetID, ext];
                }
            }
//输出:得到的路径uploadVideoFilePath格式如下:assets-library://asset/asset.MOV?id=A918D262-4915-4B4D-98DB-018A7D5860EE&ext=MOV

你可能感兴趣的:(iOS相册视频读取PHAsset到ALAsset转换)