我在路径上有文件
var/mobile/Media/DCIM/100APPLE/IMG_0292.MOV
我想要得到这个文件的NSData,但是我得到了错误
Error domain=nscocoaerrordomain code=257“无法打开IMG_0292.mov文件,因为您没有查看该文件得权限。”UserInfo=nsFilePath=/var/mobile/media/dcim/100apple/img_0292.mov,NsUnderlyingError=0x178C9F90 Error Domain=nsPosixErrordomain Code=1“不允许操作}
我试过
NSError *error;
NSData *videoData = [NSData dataWithContentsOfFile:path options:NSDataReadingMappedAlways error:&error];
和
NSError* error = nil;
NSData* data = [NSData dataWithContentsOfURL:fileURL options:NSDataReadingUncached error:&error];
也没有运气。
我也有PHAsset的视频文件,但不知道如何从它获取NSData。请帮我获取NSDATA。
你不能直接访问URL不在你的应用程序沙箱(没有几个例外)。要获取视频文件的数据,请看一下以下方法:
对于iOS 9或更高版本,请使用以下PhassetResource方法:
- (PHAssetResourceDataRequestID)requestDataForAssetResource:(PHAssetResource *)resource options:(PHAssetResourceRequestOptions *)options dataReceivedHandler:(void (^)(NSData *data))handlercompletionHandler:(void (^)(NSError *error))completionHandler;
对于iOS 8或更高版本:
- (PHImageRequestID)requestExportSessionForVideo:(PHAsset *)asset options:(PHVideoRequestOptions *)options exportPreset:(NSString *)exportPreset resultHandler:(void (^)(AVAssetExportSession *exportSession, NSDictionary *info))resultHandler;
然后读取导出URL的NSData。
只是为了完成…这对我很有效:
PHImageManager *manager = [PHImageManager defaultManager];
[manager requestAVAssetForVideo:asset.baseAsset options:nil resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) {
if([asset isKindOfClass:[AVURLAsset class]]){
//Get the url
NSURL *url = [(AVURLAsset *)asset URL];
}
}];
希望这能帮上忙。