我正在开发一个使用 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];
}