在2G/3G中使用UIImagePickerController选择视频

Raj*_*dal 5 iphone cocoa-touch uiimagepickercontroller

我遇到了一个问题,我无法从iPhone 2G/3G设备中的相册中选择视频.默认的照片应用程序确实显示视频并且能够播放它们,这反过来意味着UIImagePickerController应该能够清楚地显示相册中的视频并选择它们.

我对此进行了编码,以确定设备是否能够捕捉照片,录制视频,选择照片和选择视频:

 // 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];
Run Code Online (Sandbox Code Playgroud)

生成的3G设备日志如下:

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"
)
Run Code Online (Sandbox Code Playgroud)

正如日志所述,对于照片库,相当于kUTTypeMovie的字符串不可用,因此如果我们设置包含kUTTypeMovie的源类型数组,则UIImagePickerController不会显示(或者抛出异常)照片库中的电影文件.

我还没有测试过3GS,但我确信在参考其他线程时它不存在这个问题.

我已经为3.0(基本SDK)和3.1构建了应用程序,但结果相同.

此问题已在主题中讨论过:http: //www.iphonedevsdk.com/forum/iphone-sdk-development/36197-uiimagepickercontroller-does-not-show-movies-albums.html

但它似乎没有提供解决方案.

解决这个问题的任何方法?

谢谢和问候,Raj Pawan

Raf*_*bre 5

由于视频在被挑选后总是被压缩(原始录像机文件非常大),并且2G/3G模型无法对硬件进行编码/解码h.264,因此它们将其从UIImagePickerController API中删除.这很不幸,因为我们都喜欢在这些设备上挑选视频.