为什么我的音频AVCaptureConnection对于最高分辨率格式不起作用?

Mat*_*ick 6 audio camera high-resolution ios avcapturesession

我正在开发一个iOS项目,该项目使用AVAssetWriter和AVAssetWriterInput将音频和视频记录到文件中.当视频分辨率限制在720x1280时,一切似乎都能正常工作.我现在正试图利用AVCaptureDeviceFormats获得更新iOS设备上可用的更高分辨率.

使用设备上提供的任何AVCaptureDeviceFormats,视频继续正常工作. 但是,音频不起作用.

我已将此跟踪到我的音频AVCaptureConnection 的active属性,这是NO最高分辨率格式,在我记录时看起来像这样:

<AVCaptureConnection: 0x16f62130 [type:soun][enabled:1][active:0]>
Run Code Online (Sandbox Code Playgroud)

此外,当音频连接未激活时,不会使用音频数据调用我的didOutputSampleBuffer委托回调.

我的问题:

  • 为什么音频AVCaptureConnection对于较低分辨率格式有效,但对于最高分辨率格式无效?
  • 当视频分辨率设置为最高时,是否可以录制音频?如果是这样,怎么样?

例:

iPhone6后置摄像头上分辨率最高的AVCaptureFormats:

  • 720x1280,30 FPS(音频连接有效)
  • 720x1280,240 FPS(音频连接有效)
  • 1080x1920,30 FPS(音频连接有效)
  • 1080x1920,60 FPS(音频连接有效)
  • 1936x2592,30 FPS (音频连接未激活)
  • 2448x3264,30 FPS (音频连接未激活)

iPhone6前置摄像头上分辨率最高的AVCaptureFormats:

  • 720x1280,60 FPS(音频连接有效)
  • 960x1280,60 FPS (音频连接未激活)

这是我用来设置活动格式的代码:

if ([self.camera lockForConfiguration:nil])
{
    self.camera.activeFormat = format;
    [self.camera unlockForConfiguration];
}
Run Code Online (Sandbox Code Playgroud)