【问题标题】:Select videos using UIImagePickerController in 2G/3G在 2G/3G 中使用 UIImagePickerController 选择视频
【发布时间】:2010-05-03 13:45:20
【问题描述】:

我遇到了一个问题,我无法从 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

但它似乎没有解决方案。

有解决这个问题的办法吗?

感谢和问候, 拉吉帕万

【问题讨论】:

    标签: iphone cocoa-touch uiimagepickercontroller


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      默认的照片应用程序会显示视频并能够播放它们

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

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

      【讨论】:

      • 有像Camera Plus Pro这样的应用程序可以录制视频并将它们同步到您的相机胶卷。以后可以在照片库中查看这些视频。您还可以使用 iTunes 将视频传输到照片库。我完全不知道如何。除此之外,还有 api:-UISaveVideoAtPathToSavedPhotosAlbum 和 -UIImageWriteToSavedPhotosAlbum,它们负责将视频保存到照片库,这些可以在 2G 和 3G 设备上使用。现在我们如何把它们捡回来?
      • 是的,但是 SDK 说:“在调用这个函数之前,你应该调用 UIVideoAtPathIsCompatibleWithSavedPhotosAlbum 函数来确定是否可以将视频保存到 Saved Photos 相册。”所以你可以这样做,但前提是设备支持它。我知道不同的相机,但不认为这是一个合适的 API 用法。
      • Ammmm,我之前没有查看 UIVideoAtPathIsCompatibleWithSavedPhotosAlbum,但是可以直接使用 UISaveVideoAtPathToSavedPhotosAlbum 将视频保存到相机胶卷。那么这是一个有效的论点,理想情况下 2G / 3G 设备无法选择视频,因为它们不能播放?但是,一旦将视频放入相机胶卷,默认的照片应用程序就可以选择视频并进行播放。
      【解决方案3】:

      在 3GS 上它工作得非常好,而且 3Gs 在 SDK 3.1 之后推出,所以 3.0 没有任何与视频相关的东西的处理..!

      【讨论】:

      • 是的,我已经做了同样的观察。但是 3.1 似乎也没有这个修复。检查我上面的问题。我已经为 iPhone 3G 构建了 3.0 和 3.1 SDK,它们都没有在 UIImagePickerController 中显示视频。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-09
      • 2014-09-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多