要解决这个问题,您可以通过设置AVCaptureSession
的sessionPreset
属性来控制帧持续时间。以下是一个示例代码,演示如何设置适合iPhone 11 Pro Max的sessionPreset
:
import AVFoundation
let captureSession = AVCaptureSession()
// 检查是否支持指定的sessionPreset
if captureSession.canSetSessionPreset(.hd1920x1080) {
captureSession.sessionPreset = .hd1920x1080
} else {
// 如果不支持hd1920x1080,可以尝试其他的sessionPreset
// 例如:.hd1280x720,.high,.medium,.low等等
}
// 创建 AVCaptureDevice
guard let captureDevice = AVCaptureDevice.default(for: .video) else {
fatalError("无法获取摄像头设备")
}
do {
// 创建 AVCaptureDeviceInput
let videoInput = try AVCaptureDeviceInput(device: captureDevice)
// 将 AVCaptureDeviceInput 添加到 AVCaptureSession
if captureSession.canAddInput(videoInput) {
captureSession.addInput(videoInput)
}
} catch {
fatalError("无法创建 AVCaptureDeviceInput: \(error.localizedDescription)")
}
在上面的代码中,我们首先检查设备是否支持hd1920x1080
的sessionPreset
。如果不支持,您可以尝试其他的sessionPreset
,例如hd1280x720
、high
、medium
、low
等等。然后,我们创建AVCaptureDevice
和AVCaptureDeviceInput
,并将其添加到AVCaptureSession
中。
您可以根据自己的需求调整sessionPreset
,以便获得适合您的应用程序的帧持续时间。
上一篇:AVCaptureDevice.requestAccess(for: .audio)不会提示用户,而是直接返回true。这可能吗?
下一篇:AVCaptureDevice的exposureDuration和iso不被AVCapturePhotoOutput所遵循。