Работая с новой структурой фотографий, я могу получить доступ к NSData
PHAsset, используя requestImageDataForAsset
. Я также могу получить доступ к URL-адресу файла, используя 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, и информационный словарь указывают на один и тот же файл jpg). Например, это URL-адрес и dataUTI, возвращаемые для замедленного видео:
PHImageFileURLKey = "файл: ///var/mobile/Media/PhotoData/Metadata/DCIM/100APPLE/IMG_0642.JPG"; PHImageFileUTIKey = "public.jpeg";
Почему это происходит? Как я могу получить доступ к NSData / NSURL замедленного видео вместо этого предварительного просмотра JPG?