ios – AVCaptureSession可以使用自定义分辨率

我正在使用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()
}

您可以在Apple 7.000和the WWDC2013 session中通过AVCaptureDeviceFormat了解如何在iOS 7.0中引入设备格式的更多信息. (关于这个主题的大部分内容都是针对慢动作视频,在视频中拍摄高分辨率静态图像,以及您不能使用会话预设的其他功能,但这些不是您可以使用的做捕获格式.)

以上是来客网为你收集整理的ios – AVCaptureSession可以使用自定义分辨率全部内容,希望文章能够帮你解决ios – AVCaptureSession可以使用自定义分辨率所遇到的程序开发问题。

如果觉得来客网网站内容还不错,欢迎将来客网网站推荐给程序员好友。