CoreAudio Input Render 回调从外部音频接口 Mac OS 10.14 Mojave 渲染所有 0

Posted

技术标签:

【中文标题】CoreAudio Input Render 回调从外部音频接口 Mac OS 10.14 Mojave 渲染所有 0【英文标题】:CoreAudio Input Render callback renders all 0's from external audio interface Mac OS 10.14 Mojave 【发布时间】:2018-12-17 16:04:48 【问题描述】:

当我的 Mac 在 10.11 上时,我正在处理一个 CoreAudio 项目,我使用 CAPlayThroughExample (https://developer.apple.com/library/archive/samplecode/CAPlayThrough/Introduction/Intro.html#//apple_ref/doc/uid/DTS10004443-Intro-DontLinkElementID_2) 并仅修改了输入和输出渲染函数的一些片段以访问不同的缓冲区流。此代码适用于 Mac OS 10.11、10.12 和 10.13。对于 10.14,从我的外部音频接口播放声音时,完全没有声音。当我从 Input Proc 记录一些样本时,缓冲区都是 0.0 的。所以我将我的 mac 降级到 10.13 并且相同的代码有效。我环顾四周,用谷歌搜索了所有内容,但似乎在苹果网站上找不到任何官方资源,以查看是否有任何 API 更改。

【问题讨论】:

【参考方案1】:

在 10.14 上,您需要将 NSMicrophoneUsageDescription 添加到 Info.plist 文件。更多信息here。

【讨论】:

嘿,谢谢你的建议。你发给我的文章很棒。我添加了麦克风权限,但我仍然得到同样的东西。有趣的是,文章提到如果您收到此错误消息Unable to load Info.plist exceptions (eGPUOverrides),则表明该问题有问题。我将不得不对此进行进一步调查 因此链接中的示例说将其添加到 plist 并添加验证代码。我按照示例和步骤请求授权,但现在输入rendercall back中的音频缓冲区列表为空

以上是关于CoreAudio Input Render 回调从外部音频接口 Mac OS 10.14 Mojave 渲染所有 0的主要内容,如果未能解决你的问题,请参考以下文章

Core Audio的渲染回调不会改变输出音频[重复]

Core Audio - CARingBuffer 读取音频文件进行回调

Core Audio - 远程 IO 混乱

OSX:用于设置 IO 缓冲区长度的 CoreAudio API?

为啥我无法从 ReactDOM.render() 回调中获取对我的组件的引用?

AudioUnit Render 回调中的 Objective-C/Swift 用法