Ios 声音不适用于某些AVCaptureDeviceFormat。。。这是虫子吗?

Ios 声音不适用于某些AVCaptureDeviceFormat。。。这是虫子吗?,ios,avfoundation,avcapturesession,avcapturedevice,avcapture,Ios,Avfoundation,Avcapturesession,Avcapturedevice,Avcapture,我看到关于同样的问题,但在我的情况下,它是略有不同 关于这个问题,海报上说,当他将应用程序设置为在AVFoundation下摄像机可以提供的最高分辨率拍摄视频时,他无法录制音频 在最初的问题上,海报提到他的AVCaptureConnection没有音频。我相信他是在说captureOutput:didOutputSampleBuffer:fromConnection:但是在我的例子中,问题稍微不同。在我的例子中,这个方法永远不会被音频调用。我的意思是,每次调用此方法时,连接总是一个视频连接。。。

我看到关于同样的问题,但在我的情况下,它是略有不同

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

在最初的问题上,海报提到他的
AVCaptureConnection
没有音频。我相信他是在说
captureOutput:didOutputSampleBuffer:fromConnection:
但是在我的例子中,问题稍微不同。在我的例子中,这个方法永远不会被音频调用。我的意思是,每次调用此方法时,连接总是一个视频连接。。。或者换句话说,这里没有调用数据音频输出委托

我已经检查了
captureSession
并且麦克风在那里,因此
captureSession
包含音频的
AVCaptureDeviceInput

(lldb) po _captureSession.inputs
<__NSArrayI 0x170227e00>(
<AVCaptureDeviceInput: 0x17422e2e0 [Back Camera]>,
<AVCaptureDeviceInput: 0x17422e8e0 [iPad Microphone]>
)
(lldb)po\u captureSession.inputs
(
.我已经用4032x3024调整了FHViewController.m的第459行,这是我的iPad的最大分辨率。您应该将其调整为设备后置摄像头的最大分辨率


出于某种奇怪的原因,当您这样做时,应用程序在尝试初始化音频时崩溃。基于此,我的代码初始化ok但不录制声音。我让代码崩溃是因为它可能会有更大的帮助。您将看到
channellayoututand
basicDescription
对于该v都为空ideo格式。降低分辨率,音频将初始化为ok。

这里有一个挥手回答:4032x3024不是常见的视频分辨率。但480p、720p和1080p是。如果你阅读了相关内容,你会发现3840x2160也是

事实上,“2160p”在我的iphone6s上可以同时捕获音频和视频,为什么不试试呢

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


但是不要对AVFoundation太苛刻-它在给疯狂的硬件贴上一张理智的脸上做了一件勇敢的工作。如果你需要记录功能和文档错误的话。

你能展示一下设置AVCaptureSession的代码吗?我的设置代码和我的完全一样。只要拿着它,把相机设置到通过使用
setActiveVideoMinFrameDuration
setActiveVideoMaxFrameDuration
,您的设备可以达到最高分辨率。您可以拍摄视频,但不能拍摄声音。您有修改过的链接吗?我上传了一个修改过的版本。我用4032x调整了
FHViewController.m
的第459行3024这是我的iPad的最大分辨率。出于某种奇怪的原因,当你这样做时,当它试图初始化音频时,应用程序崩溃。我的应用程序初始化正常,但不录制。我让代码崩溃,因为也许它可以帮助更多。你会看到
channelLayout
basicDescription
对于视频格式。降低分辨率,音频将初始化ok。@RhythmicFistman-你检查过了吗?好的,谢谢你的解释。是的,
AVAssetWriter
可以用音频很好地编写4K视频。我想是这样的:如果给定相机的
AVFoundation
格式返回为true,它应该会录制声音。出现这种情况被苹果禁用的东西,不仅仅是一个限制。关于
AVFoundation
,我很确定它是由撒旦自己写的。这是我曾经处理过的最糟糕的框架。混乱、构思拙劣和文档记录不完善。我确信一个相机不需要创建数千行代码就可以工作。他们应该吃一些高级的东西,比如SpriteKit 4摄像头。只是想让你知道,苹果今天写信给我说这是一个已知的bug#1337303。已知,但他们还没有修复它。