这通常是由于在调用 capturePhoto(with:settings:delegate:) 方法时未正确配置捕获参数所致。确保正确传递捕获设置参数,以便正确配置相机的输出。以下示例演示如何使用 AVRational 类型来配置捕获设置。
let captureSettings = AVCapturePhotoSettings()
captureSettings.isHighResolutionPhotoEnabled = true
//将捕获设置中的预设宽度和高度设置为 1920 x 1080
captureSettings.photoDimensions = CMVideoDimensions(width: 1920, height: 1080)
let captureDelegate = MyCaptureDelegate()
//设置捕获输出的视频帧率。这将传递一个 AVRational 作为捕获设置的一个属性。
//例如,对于 30fps 的视频序列,AVRational(30, 1) 中的分子为帧数,分母为秒数。
captureSettings["AVVideoPreferredFrameRateKey"] = AVRational(30, 1)
photoOutput.capturePhoto(with: captureSettings, delegate: captureDelegate)
在您的 AVCapturePhotoCaptureDelegate 类中,请确保实现 didCapturePhotoFor 和 didFinishProcessingPhoto 委托方法,并检查输出中的 ckMetaData 是否为以字典形式存在的捕获信息。
上一篇:AVCaptureMultiCamSession 前后摄像头图像 iOS
下一篇:AVCapturePhotoOutputcapturePhoto-resultisoffset/jumpeddowncomparedtopreview。