我正在使用AVCaptureSession
捕捉和录制视频.
我需要以4:3的比例录制视频,并且分辨率很高.
有没有办法在使用时捕获时指定自定义分辨率AVCaptureSession
?
我试图使用本地预设,但问题是,我需要在4以捕获:3的比例,而且几乎所有的预置为16:9.而4:3的分辨率非常低.
我不能用任何其他方式将预设更改为自定义预设,如果我需要以更好的分辨率捕获4:3视频,该怎么办?有任何想法吗?
AVCaptureSession
预设仅涵盖设备相机的一小部分功能(大多数应用需要快速,轻松访问).对于更精细的控制 - 例如选择会话预设未提供的捕获分辨率 - 您需要使用捕获格式.
查看捕获设备的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() }
您可以AVCaptureDeviceFormat
在Apple的编程指南和在iOS 7.0中引入设备格式的WWDC2013会话中找到有关配置捕获会话的更多信息.(你会发现关于这个主题的大部分内容都是针对慢动作视频,在视频中拍摄高分辨率的照片,以及其他你不能用会话预设做的事情,但这些并不是你能做到的唯一事情.处理捕获格式.)