Ios NSData DATA WITH CONTENTS用于摄像机滚动的URL的URL

Ios NSData DATA WITH CONTENTS用于摄像机滚动的URL的URL,ios,objective-c,nsdata,nsurl,photolibrary,Ios,Objective C,Nsdata,Nsurl,Photolibrary,我有一些存储在相机卷中的视频URL。例如: file:///var/mobile/Media/DCIM/100APPLE/IMG_0249.MP4 我想进一步处理这些视频作为NSData,但如果我使用 NSURL* videoURL = [NSURL fileURLWithPath:@"file:///var/mobile/Media/DCIM/100APPLE/IMG_0249.MP4"]; NSData *imageData = [NSData dataWithContentsOfURL:v

我有一些存储在相机卷中的视频URL。例如:

file:///var/mobile/Media/DCIM/100APPLE/IMG_0249.MP4

我想进一步处理这些视频作为NSData,但如果我使用

NSURL* videoURL = [NSURL fileURLWithPath:@"file:///var/mobile/Media/DCIM/100APPLE/IMG_0249.MP4"];
NSData *imageData = [NSData dataWithContentsOfURL:videoURL options:NSDataReadingMappedIfSafe error:&error];
数据总是零。我得到以下错误:

错误域=NSCOCAERRORDOMAIN Code=257“文件”IMG_0249.MP4 无法打开,因为您没有查看它的权限。“ UserInfo={NSFilePath=/var/mobile/Media/DCIM/100APPLE/IMG_0249.MP4, NSUnderlyingError=0x165351d0{Error Domain=NSPOSIXErrorDomain Code=1 “不允许操作”}


我注意到,如果URL来自我的本地应用程序文档文件夹,我可以生成无任何问题的NSData。我想知道是不是不允许从存储在摄像机卷中的视频中创建NSData。我想知道我是否需要使用照片框架或其他方法来获得许可。

事实证明,我无法直接将相机转鼓视频的URL转换为NSData,我需要使用PHImageManager来实现这一点(并使用我过去获取的视频相位集的LocaliIdentifier):


我的猜测是,avurlaste*urlaste有一些我以前通过[NSURL fileURLWithPath]的方法所没有的额外权限信息。

事实证明,我无法直接将相机转鼓视频的URL转换为NSData,我需要使用PHImageManager来实现这一点(并使用我过去获取的视频相位集的localIdentifier):


我的猜测是,avurlaste*urlaste有一些额外的权限信息,这是我以前通过[NSURL fileURLWithPath]获得的没有。

使用
+dataWithContentsOfFile:options:error
并在Q中报告错误。
videoURL
不是
nil
。对吗?@AminNegm Awad该url不是nil。我已经根据您的建议更新了问题。帷幕拉开了…使用
+dataWithContentsOfFile:options:error
并报告错误你的问题中出现错误。
videoURL
不是
nil
。对吗?@AminNegm Awad该url不是nil。我根据你的建议更新了这个问题。然后帷幕拉开…
PHFetchResult* assets = [PHAsset fetchAssetsWithLocalIdentifiers:@[videoID] options:nil];

PHAsset *asset = assets.firstObject;
if (asset.mediaType == PHAssetMediaTypeVideo) {
    [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset *asset, AVAudioMix *audioMix, NSDictionary *info) {
        if ([asset isKindOfClass:[AVURLAsset class]]) {
            AVURLAsset* urlAsset = (AVURLAsset*)asset;
            NSData *data = [NSData dataWithContentsOfURL:urlAsset.URL];
            [self sendToTwitter:data withMessage:message account: account];
        }
    }];
}