iOS AVFoundation:获取 AVCaptureDevice.Format 的视频尺寸

iOS AVFoundation: Get AVCaptureDevice.Format's video dimensions

我正在尝试显示 photos/video 录音可以带给用户的维度。

虽然可以通过 AVCaptureDevice.Format.highResolutionStillImageDimensions 轻松访问照片尺寸,但我不知道如何才能为视频实现同样的尺寸。

我已经尝试了 AVCaptureDevice.Format.formatDescription.dimensions property (or the .presentationDimensions(..) func),但那些只是给了我以下编译错误:

因为这些从 iOS 13.0 开始可用(我相信那是 Swift 5.1?),我绝对应该为那些提供 API(特别是因为我可以 CMD + Click在我的代码中),我的项目应该可以编译。我在这里错过了什么吗?是否有更好的解决方案来获得捕获设备可以录制视频的分辨率?

没有直接API获取视频分辨率。 您可以设置AVCaptureSession.sessionPreset to one of the AVCaptureSession.Preset, then use canSetSessionPreset(_:)来检查当前设备是否支持预设。

我刚刚做了以下测试并打印了所有可用的视频尺寸:

let descriptions = device.formats.map(\.formatDescription)
let sizes = descriptions.map(\.dimensions)
print(sizes)

我还检查了它是否为 iOS、模拟器和 macOS 编译,确实如此。

你还支持iOS12吗?您检查过您的 SDK 设置了吗?

你只需要下面line.That就可以了。

   let dimensions = CMVideoFormatDescriptionGetDimensions(format.formatDescription)