3

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

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 
Смежные вопросы