Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Select videos using UIImagePickerController in 2G/3G

I am facing a problem where-in I cannot select videos from the photo album in iPhone 2G/3G device. The default photos application does show videos and is capable of playing them, which in turn means that UIImagePickerController should clearly be capable of showing videos in photo album and selecting them.

I have coded this to determine whether the device is capable of snapping a photo, recording video, selecting photos and selecting videos:

 // Check if camera and video recording are available:
 [self setCameraAvailable:NO];
 [self setVideoRecordingAvailable:NO];
 [self setPhotoSelectionAvailable:NO];
 [self setVideoSelectionAvailable:NO];

 // For live mode:
 NSArray *availableTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
 NSLog(@"Available types for source as camera = %@", availableTypes);
 if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
 {
  if ([availableTypes containsObject:(NSString*)kUTTypeMovie])
   [self setVideoRecordingAvailable:YES];
  if ([availableTypes containsObject:(NSString*)kUTTypeImage])
   [self setCameraAvailable:YES];
 }

 // For photo library mode:
 availableTypes = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
 NSLog(@"Available types for source as photo library = %@", availableTypes);
 if ([availableTypes containsObject:(NSString*)kUTTypeImage])
  [self setPhotoSelectionAvailable:YES];
 if ([availableTypes containsObject:(NSString*)kUTTypeMovie])
  [self setVideoSelectionAvailable:YES];

The resulting logs for 3G device is as follows:

2010-05-03 19:09:09.623 xyz [348:207] Available types for source as camera = (
    "public.image"
)
2010-05-03 19:09:09.643 xyz [348:207] Available types for source as photo library = (
    "public.image"
)

As the logs state, for photo library the string equivalent of kUTTypeMovie is not available and hence the UIImagePickerController does not show up (or rather throws exception if we set the source types array which includes kUTTypeMovie) the movie files in photo library.

I havent tested for 3GS, but I am sure that this problem does not exist in it with reference to other threads.

I have built the app for both 3.0 (base SDK) and 3.1 but with the same results.

This issue is already discussed in the thread: http://www.iphonedevsdk.com/forum/iphone-sdk-development/36197-uiimagepickercontroller-does-not-show-movies-albums.html

But it does not seem to host a solution.

Any solutions to this problem?

Thanks and Regards, Raj Pawan

like image 810
Raj Pawan Gumdal Avatar asked May 03 '10 13:05

Raj Pawan Gumdal


1 Answers

As the videos are always compressed after being picked (the raw video recorder files are very big), and the 2G/3G models not being able to hardware encode/decode h.264, they left it out of the UIImagePickerController API. That is unfortunate as we all would love to pick videos on those devices as well.

like image 192
Rafael Nobre Avatar answered Sep 19 '22 12:09

Rafael Nobre