在2G/3G网络下使用UIImagePickerController选择视频

5
我遇到了一个问题,就是在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个回答

5

由于录制的视频文件很大,因此在选择后始终进行压缩,并且2G / 3G型号无法进行硬件编码/解码h.264,因此将其从UIImagePickerController API中省略了。这很不幸,因为我们都希望在这些设备上选择视频。


3

默认照片应用程序可以显示视频并能够播放它们。

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

文档明确说明:“由于媒体源可能不存在或不可用,设备可能不总是支持所有源类型。”因此,iPhone OS认为不能有任何电影,并且不允许选择它们。我认为是这样的。


有一些应用程序(比如Camera Plus Pro)可以录制视频并将其同步到相机胶卷中。稍后,这些视频可以在照片库中查看。 此外,您也可以使用iTunes将视频传输到照片库。不过我不确切知道具体的操作方法。 除此之外,还有apis:-UISaveVideoAtPathToSavedPhotosAlbum和-UIImageWriteToSavedPhotosAlbum,它们可以完成将视频保存到照片库的任务,并且可以在2G和3G设备上使用。现在我们如何将它们取回呢? - Raj Pawan Gumdal
是的,但SDK说:“在调用此函数之前,您应该调用UIVideoAtPathIsCompatibleWithSavedPhotosAlbum函数来确定是否可以将视频保存到已保存的照片相册。”因此,只有设备支持才能这样做。我知道有不同的相机,但不认为这是适当的API使用方式。 - bealex
我之前没有检查过UIVideoAtPathIsCompatibleWithSavedPhotosAlbum,但是可以直接使用UISaveVideoAtPathToSavedPhotosAlbum将视频保存到相机胶卷。这是一个有效的论点,理想情况下,2G / 3G设备不能选择视频,因为它们无法播放?然而,一旦视频被放置在相机胶卷中,默认的照片应用程序就能够选择并播放它们。 - Raj Pawan Gumdal

0

在3GS上它完美地工作,而且事实上3GS已经在SDK 3.1之后推出,所以3.0没有任何处理视频相关的功能..!


是的,我已经做出了同样的观察。但是3.1似乎也没有这个修复程序。请查看我的上面的问题。我已经为iPhone 3G构建了3.0和3.1 SDK,但它们都无法在UIImagePickerController中显示视频。 - Raj Pawan Gumdal

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接