iPhone 视频录制:“cameraCaptureMode 1 不可用,因为 mediaTypes 确实包含 public.movie”

作者:编程家 分类: ios 时间:2025-07-10

解决 iPhone 视频录制中的 cameraCaptureMode 1 不可用问题

在使用 iPhone 进行视频录制时,有时会遇到 cameraCaptureMode 1 不可用的问题,而错误提示中显示 mediaTypes 包含 public.movie。这是一个常见的问题,但可以通过一些简单的步骤来解决。本文将介绍如何解决这个问题,并提供相应的案例代码供参考。

问题背景

在 iPhone 的摄像头 API 中,cameraCaptureMode 是一个用于配置摄像头采集模式的属性。cameraCaptureMode 有多个可选值,其中 1 表示录制视频。然而,在某些情况下,当我们尝试将 cameraCaptureMode 设置为 1 时,会收到一个错误提示,指出该模式不可用,同时提到 mediaTypes 包含 public.movie。

这个问题的根本原因是我们没有正确配置 mediaTypes 属性,导致无法使用 cameraCaptureMode 1 进行视频录制。下面将介绍如何解决这个问题。

解决方法

要解决 cameraCaptureMode 1 不可用的问题,我们需要正确配置 mediaTypes 属性。mediaTypes 是一个用于指定摄像头支持的媒体类型的属性,如果不正确配置,将导致 cameraCaptureMode 1 不可用。

下面是一个示例代码,演示了如何正确配置 mediaTypes 属性以解决这个问题:

swift

import UIKit

import AVFoundation

class ViewController: UIViewController {

override func viewDidLoad() {

super.viewDidLoad()

// 检查设备是否支持摄像头

guard UIImagePickerController.isSourceTypeAvailable(.camera) else {

print("设备不支持摄像头")

return

}

// 创建 UIImagePickerController 实例

let imagePickerController = UIImagePickerController()

// 配置 mediaTypes 属性,仅包含 public.movie

imagePickerController.mediaTypes = [kUTTypeMovie as String]

// 配置 cameraCaptureMode 为 1

imagePickerController.cameraCaptureMode = .video

// 设置代理

imagePickerController.delegate = self

// 弹出摄像头界面

present(imagePickerController, animated: true, completion: nil)

}

}

extension ViewController: UIImagePickerControllerDelegate, UINavigationControllerDelegate {

// 实现相应的代理方法

// ...

}

在上面的示例代码中,我们首先检查设备是否支持摄像头。然后,我们创建一个 UIImagePickerController 实例,并配置 mediaTypes 属性为 [kUTTypeMovie as String],即仅包含 public.movie 类型。接下来,我们将 cameraCaptureMode 设置为 .video,代表录制视频。最后,我们设置了相应的代理,并弹出摄像头界面。

通过正确配置 mediaTypes 属性,我们解决了 cameraCaptureMode 1 不可用的问题,现在我们可以正常录制视频了。

通过正确配置 mediaTypes 属性,我们可以解决 iPhone 视频录制中 cameraCaptureMode 1 不可用的问题。本文提供了一个简单的示例代码,演示了如何配置 mediaTypes 属性以解决这个问题。希望本文能帮助到遇到类似问题的开发者,使他们能够顺利进行视频录制操作。