美文网首页iOS学习专题大前端开发iOS点点滴滴
iOS相册视频读取PHAsset到ALAsset转换

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

作者: link_hui | 来源:发表于2018-02-05 23:14 被阅读44次

    问题

    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转换

        本文链接:https://www.haomeiwen.com/subject/ehlwzxtx.html