我在路径
处有档案NSError *error;
NSData *data = [NSData dataWithContentsOfFile:assetUrl.relativePath options:NSDataReadingMappedAlways error:&error];
但是当我尝试这段代码时 -
PHFetchResult *fetchResult = [PHAsset fetchAssetsWithALAssetURLs:@[assetUrl] options:nil];
我什么都没有,只有错误:
错误域= NSCocoaErrorDomain代码= 257“Неудалосьзавершить операцию。 (Cocoa,ошибка257)“UserInfo = 0x175a61380 {NSFilePath =的/ var /移动/媒体/ DCIM / 100APPLE / IMG_0197.mov, NSUnderlyingError = 0x17424e550“Неудалосьзавершитьоперацию。 不允许操作“}
文件存在,但我看不懂。
但同时AVPlayer通常会播放视频文件。
我试过
<strong>
但我没有得到任何结果。
答案 0 :(得分:8)
您无法直接访问NSURL
,因为文件位于应用沙盒之外。某些框架(如AVPlayer
)具有异常授权,可以访问URL。
要访问PHAsset
个对象的数据,请查看PHImageManager
的以下方法:
对于图片:requestImageDataForAsset
视频:requestExportSessionForVideo
答案 1 :(得分:3)
对我来说,帮助了以下代码。使用__table__
代替relativePath
非常重要。
absoluteString
Swift 3版本: -
[[PHImageManager defaultManager] requestAVAssetForVideo:videoContent options:options resultHandler:^(AVAsset* avasset, AVAudioMix* audioMix, NSDictionary* info){
AVURLAsset* myAsset = (AVURLAsset*)avasset;
NSData * data = [NSData dataWithContentsOfFile:myAsset.URL.relativePath];
if (data) {
}
}];