Ориентация выбранного видео в UIImagePicker

Как получить ориентацию видео, которое выбрано в галерее в UIImagepickerController?

UIImagePickerController * videoRecorder = [[UIImagePickerController alloc] init];
videoRecorder.delegate = self;
videoRecorder.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
videoRecorder.mediaTypes = [[NSArray alloc] initWithObjects:(NSString *)kUTTypeMovie, nil];
 [self presentViewController:videoRecorder animated:YES completion:nil];
1 ответ

Получите AVAsset из ALAssetsLibrary и используйте следующую категорию:

@interface ALAssetsLibrary (VideoOrientation)
+ (UIInterfaceOrientation)orientationForTrack:(AVAsset *)asset;
@end
@implementation ALAssetsLibrary (VideoOrientation)
+ (UIInterfaceOrientation)orientationForTrack:(AVAsset *)asset
{
 NSArray *videoAssets = [asset tracksWithMediaType:AVMediaTypeVideo];
 if (!videoAssets.count)
 {
 NSLog(@"No video assets found.");
 return UIInterfaceOrientationPortrait;
 }
 // Get the video track.
 AVAssetTrack *videoTrack = [videoAssets objectAtIndex:0];
 CGSize size = [videoTrack naturalSize];
 CGAffineTransform preferredTransform = [videoTrack preferredTransform];
 // Return interface orientation based on
 // the preferred transform and size of the video.
 if (size.width == preferredTransform.tx &&
 size.height == preferredTransform.ty)
 {
 return UIInterfaceOrientationLandscapeRight;
 }
 else if (preferredTransform.tx == 0 &&
 preferredTransform.ty == 0)
 {
 return UIInterfaceOrientationLandscapeLeft;
 }
 else if (preferredTransform.tx == 0 &&
 preferredTransform.ty == size.width)
 {
 return UIInterfaceOrientationPortraitUpsideDown;
 }
 else
 {
 return UIInterfaceOrientationPortrait;
 }
}
@end

licensed under cc by-sa 3.0 with attribution.