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)
我正在尝试显示 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)