我正在使用AVCaptureSession
来捕获和记录视频。
我需要以4:3的比例录制视频,并且分辨率要好。
在使用AVCaptureSession
进行捕获时,有没有办法指定自定义分辨率?
我尝试了使用本地预设,但问题是我需要以4:3的比例进行捕获,而几乎所有的预设都是16:9。而那些4:3的预设分辨率非常低。
我找不到其他更改预设为自定义预设的方法,如果我需要以更高的分辨率捕获4:3视频怎么办?有什么想法吗?
我正在使用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()
}
您可以通过苹果公司的编程指南和介绍设备格式的WWDC2013会议了解有关配置捕获会话的更多信息,其中介绍了使用AVCaptureDeviceFormat
进行配置。 (大多数关于此主题的内容都是针对慢动作视频、在视频中拍摄高分辨率静止图像以及其他无法使用会话预设完成的操作,但这些不是捕获格式的唯一用途。)
AVMutableComposition
剪裁输出视频到所需的宽高比:如果您将预览层调整为4:3的遮罩,这对用户来说将是无缝的。