我正在使用 AVCaptureSession
来捕捉和录制视频。
我需要以 4:3 的比例和良好的分辨率录制视频。
在使用 AVCaptureSession
捕获时是否可以指定自定义分辨率?
我尝试使用原生预设,但问题是我需要以 4:3 的比例进行捕捉,而几乎所有预设都是 16:9。 4:3的分辨率很低。
我无法找到任何其他方法将预设更改为自定义预设,如果我需要以更好的分辨率捕获 4:3 视频怎么办?有什么想法吗?
最佳答案
AVCaptureSession
预设仅涵盖设备相机功能的一小部分(大多数应用程序都希望快速、轻松地访问这些功能)。要进行更细粒度的控制(例如选择 session 预设未提供的捕获分辨率),您需要改用捕获格式。
查看捕获设备的formats
属性,AVCaptureDeviceFormat
的数组对象。枚举该数组,直到找到一个尺寸符合您要求的数组。要获取尺寸,请查看格式的基础 CMFormatDescription
:
let fdesc = format.formatDescription
let dims = CMVideoFormatDescriptionGetDimensions(fdesc)
NSLog("%d x %d", dims.width, dims.height)
找到所需格式后,锁定设备进行配置并设置其 activeFormat
:
if try device.lockForConfiguration() {
device.activeFormat = myChosenFormat
// set up other things like activeVideoMinFrameDuration if you want
device.unlockForConfiguration()
}
您可以在 Apple 的 programming guide 中找到有关通过 AVCaptureDeviceFormat
配置捕获 session 的更多信息和 the WWDC2013 session在 iOS 7.0 中引入了设备格式。 (你会发现关于这个主题的大部分内容都是针对慢动作视频,在视频中拍摄高分辨率静止图像,以及其他你不能用 session 预设做的事情,但这些并不是你唯一可以做的事情处理捕获格式。)
关于ios - AVCaptureSession 能否使用自定义分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34640551/