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

时间:2010-05-03 13:45:20

标签: 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];

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"
)

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

我没有测试过3GS,但我确信其中没有参考其他线程存在这个问题。

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

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

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

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

谢谢和问候, Raj Pawan

3 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

  

默认照片应用程序确实显示视频并且能够播放

但你怎么测试这个? 2G / 3G无法录制视频。因此,您无法将视频文件放置到图像选择器中。或者我错了吗?

文档明确指出:“由于媒体源可能不存在或可能不可用,因此设备可能并不总是支持所有源类型。”所以iPhone OS假设没有任何电影,也不允许选择它们。我想是的。

答案 2 :(得分:0)

ON 3GS它的工作非常精细,而事实是3Gs已经在SDK 3.1之后滚动所以3.0没有任何处理视频相关的东西..!