使用新的 Photo 框架,我可以NSData
使用requestImageDataForAsset
. 我还可以使用PHImageFileURLKey
返回的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"];
}];
这适用于图像和普通视频。
但是,当资产是 PHAssetMediaSubtypeVideoHighFrameRate(慢动作视频)时,返回的数据对应于包含视频第一帧的 JPG 文件(NSData、dataUTI 和 info 字典都指向同一个 jpg 文件)。例如,这是慢动作视频返回的 URL 和 dataUTI:
PHImageFileURLKey = "file:///var/mobile/Media/PhotoData/Metadata/DCIM/100APPLE/IMG_0642.JPG"; PHImageFileUTIKey = "public.jpeg";
为什么会这样?如何访问慢动作视频的 NSData/NSURL 而不是这个 JPG 预览?