我在路径
处有档案var/mobile/Media/DCIM/100APPLE/IMG_0292.MOV
我想得到这个文件的NSData,但是我收到了错误
错误域= NSCocoaErrorDomain代码= 257"文件“IMG_0292.MOV” 由于您无权查看,因此无法打开。" 的UserInfo = {NSFilePath =的/ var /移动/媒体/ DCIM / 100APPLE / IMG_0292.MOV, NSUnderlyingError = 0x178c9f90 {错误域= NSPOSIXErrorDomain代码= 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。
答案 0 :(得分:2)
您无法直接访问不在应用沙箱中的网址(没有少数例外)。 要获取视频文件的数据,请查看以下方法:
对于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。
答案 1 :(得分:0)
为了完成起见..这对我有用:
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];
}
}];
希望这有帮助。