声音不适用于某些AVCaptureDeviceFormat ......这是一个错误吗?

时间:2017-04-16 18:02:16

标签: ios avfoundation avcapturesession avcapturedevice avcapture

我在SO上看到this question关于同样的问题但在我的情况下它略有不同。

关于这个问题,海报上说当他设置应用程序以相机在AVFoundation下可以提供的最高分辨率拍摄视频时,他无法录制音频。

在原始问题上,海报提到他的AVCaptureConnection没有音频。我相信他在captureOutput:didOutputSampleBuffer:fromConnection:内部谈话,但就我而言,问题略有不同。在我的例子中,从不为音频调用此方法。我的意思是,每次调用此方法connection始终是一个视频...或者换句话说,这里没有调用数据音频输出委托。

我已查看captureSession并且麦克风已存在,因此captureSession包含AVCaptureDeviceInput音频。

(lldb) po _captureSession.inputs
<__NSArrayI 0x170227e00>(
<AVCaptureDeviceInput: 0x17422e2e0 [Back Camera]>,
<AVCaptureDeviceInput: 0x17422e8e0 [iPad Microphone]>
)

我正在iPad Pro 9.7上进行测试。我已经检查了这个设备的前后摄像头的所有分辨率,我没有这些音频:

  1. 前置摄像头:960p @ 30或60 fps
  2. 以30 fps的速度返回CAMERA 4032x3024
  3. 我尝试在更改分辨率后删除并添加音频设备,但captureSession挂起并且预览冻结。该应用程序继续工作,没有崩溃,但预览冻结。

    这是一个错误吗?我没有看到任何文件提及我无法录制相机可以提供的最高分辨率的音频。

    注意:为了演示此问题,我上传了Apple的CIFunHouse here的修改版本。我已经调整了FHViewController.m的第459行,其中4032x3024是我iPad的最高分辨率。您应该根据设备后置摄像头的最大分辨率进行调整。

    由于某些奇怪的原因,当您这样做时,应用程序在尝试初始化音频时崩溃。我的代码基于此,初始化ok但不记录声音。我让代码崩溃了,因为也许它可以帮助更多。您会看到channelLayoutandbasicDescription对于该视频格式都是NULL。降低分辨率,音频将初始化确定。

1 个答案:

答案 0 :(得分:1)

这是一个挥手的答案:4032x3024不是常见的视频分辨率。但是480p,720p和1080p。如果您阅读4K resolution video,您会看到3840x2160也是如此。

事实上“2160p”确实可以在我的iPhone 6s上捕获音频和视频,所以为什么不试试呢?

AVAssetWriter能够编码2160p吗?谁知道?也许

但是AVFoundation不要过于苛刻 - 它能够在硬件的疯狂上做出明智的表现。如果有的话,你应该记录功能和文档错误。