6

我正在开发一个使用 AVAssetWriter 和 AVAssetWriterInput 将音频和视频录制到文件的 iOS 项目。当视频分辨率限制为 720x1280 时,一切似乎都正常。我现在正在尝试利用 AVCaptureDeviceFormats 在较新的 iOS 设备上获得更高的分辨率。

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

我已经将此追踪到我的音频 AVCaptureConnection的active属性NO,该属性用于最高分辨率格式,当我记录它时看起来像这样:

<AVCaptureConnection: 0x16f62130 [type:soun][enabled:1][active:0]>

此外,当音频连接未激活时,不会使用音频数据调用我的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];
}
4

0 回答 0