Ios AVCaptureSession能否使用自定义分辨率

Ios AVCaptureSession能否使用自定义分辨率,ios,avfoundation,avcapturesession,Ios,Avfoundation,Avcapturesession,我正在使用AVCaptureSession捕获并录制视频 我需要以4:3的比例录制视频,并且具有良好的分辨率 使用AVCaptureSession进行捕获时,是否有方法指定自定义分辨率 我尝试使用本机预设,但问题是我需要以4:3的比例捕捉,几乎所有预设都是16:9。4:3的分辨率很低 我无法用任何其他方法将预设更改为自定义设置,如果我需要捕获分辨率更好的4:3视频,该怎么办?有什么想法吗?AVCaptureSession预设仅涵盖设备摄像头功能的一小部分(大多数应用程序都希望快速、方便地访问这些

我正在使用
AVCaptureSession
捕获并录制视频

我需要以4:3的比例录制视频,并且具有良好的分辨率

使用
AVCaptureSession
进行捕获时,是否有方法指定自定义分辨率

我尝试使用本机预设,但问题是我需要以4:3的比例捕捉,几乎所有预设都是16:9。4:3的分辨率很低


我无法用任何其他方法将预设更改为自定义设置,如果我需要捕获分辨率更好的4:3视频,该怎么办?有什么想法吗?

AVCaptureSession
预设仅涵盖设备摄像头功能的一小部分(大多数应用程序都希望快速、方便地访问这些功能)。对于更细粒度的控制(例如选择会话预设未提供的捕获分辨率),您需要使用捕获格式

查看捕获设备的属性,即对象数组。枚举该数组,直到找到所需维度的数组。要获取维度,请查看格式的底层
CMFormatDescription

let fdesc = format.formatDescription
let dims = CMVideoFormatDescriptionGetDimensions(fdesc)
NSLog("%d x %d", dims.width, dims.height)
找到所需格式后,锁定设备进行配置并设置其:


您可以通过Apple中的
AVCaptureDeviceFormat
以及iOS 7.0中引入的设备格式了解更多关于配置捕获会话的信息。(本主题的大部分内容都是针对慢动作视频、在视频中拍摄高分辨率的静态照片,以及使用会话预设无法完成的其他事情,但这些并不是使用捕获格式可以完成的唯一事情。)

只需按给定的纵横比录制,并使用
AVMutableComposition
将输出视频裁剪到所需的纵横比:如果将预览层调整为4:3,用户会觉得这是无缝的

你能提供更多的信息吗?你试过什么预设选项?你试过AVCaptureSessionPreset640x480吗?@T先生我需要一个更好的resolution@Eyal,如果问题是真实的?我知道如何使用GPUImage来实现这一点,如果你想的话可以回答你好谢谢你的回答,当打印dims时,没有新的尺寸,但是有很多重复的尺寸。我没有找到一种方法来创建一种新的格式(不确定它是否可能),这会增加很多不必要的开销,特别是在进行图像处理时。@chuviethechorkie我不明白:如果你不能从硬件中获得4:3的格式,那么是的,你自己进行转换是非常必要的。如果你正在进行图像处理,你a)不需要视频馈送,b)无论如何都会在管道中发现进一步的瓶颈
if try device.lockForConfiguration() {
    device.activeFormat = myChosenFormat
    // set up other things like activeVideoMinFrameDuration if you want
    device.unlockForConfiguration()
}