使用新的Photo框架,我可以访问NSDataPHAssets requestImageDataForAsset.我也可以使用PHImageFileURLKey返回的文件URL访问info NSDictionary.
[[PHImageManager defaultManager] requestImageDataForAsset:asset options:nil resultHandler:^(NSData *imageData, NSString *dataUTI, UIImageOrientation orientation, NSDictionary *info) {
//imageData contains the correct data for images and videos
NSLog(@"info - %@", info);
NSURL* fileURL = [info objectForKey:@"PHImageFileURLKey"];
}];
Run Code Online (Sandbox Code Playgroud)
这适用于图像和普通视频.
但是,当资产是PHAssetMediaSubtypeVideoHighFrameRate(慢动作视频)时,返回的数据对应于包含视频的第一帧的JPG文件(NSData,dataUTI和信息字典都指向同一jpg文件).例如,这是为慢动作视频返回的URL和dataUTI:
PHImageFileURLKey ="file:///var/mobile/Media/PhotoData/Metadata/DCIM/100APPLE/IMG_0642.JPG"; PHImageFileUTIKey ="public.jpeg";
为什么会这样?如何访问慢动作视频的NSData/NSURL而不是此JPG预览?