Working with new Photo framework, I can access the NSData
of PHAssets using requestImageDataForAsset
. I can also access the file URL using the PHImageFileURLKey
of the returned 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"];
}];
This works fine for images and normal videos.
However, when the asset is a PHAssetMediaSubtypeVideoHighFrameRate (slow motion video), the returned data corresponds to a JPG file containing the first frame of the video (both the NSData, the dataUTI and the info dictionary point to the same jpg file). As example, this is the URL and the dataUTI returned for a slow motion video:
PHImageFileURLKey =
"file:///var/mobile/Media/PhotoData/Metadata/DCIM/100APPLE/IMG_0642.JPG";
PHImageFileUTIKey = "public.jpeg";
Why is this happening?
How can i access the NSData/NSURL of the slow motion video instead of this JPG preview?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…