小编ole*_*man的帖子

VoiceProcessingIO 音频单元向内置输出设备添加意外的输入流 (macOS)

我在 macOS 上开发 VoIP 应用程序,并使用 VoiceProcessingIO 音频单元进行音频处理,例如回声消除和自动增益控制。

问题是,当我初始化音频单元时,核心音频设备列表发生变化 - 不仅仅是添加 VP 音频单元满足其需要的新聚合设备,而且还因为内置输出设备(即“内置 - MacBook Pro”)扬声器”)现在也显示为输入设备,即除了输出流之外还有意外的输入流。

这是我在初始化 VP AU 之前从 Core Audio 获得的输入设备(又名“麦克风”)列表:

DEVICE:      INPUT   45      BlackHole_UID
DEVICE:      INPUT   93      BuiltInMicrophoneDevice
Run Code Online (Sandbox Code Playgroud)

这是我的 VP AU 初始化时的相同列表:

DEVICE:      INPUT   45      BlackHole_UID
DEVICE:      INPUT   93      BuiltInMicrophoneDevice
DEVICE:      INPUT   86      BuiltInSpeakerDevice /// WHY?
DEVICE:      INPUT   98      VPAUAggregateAudioDevice-0x101046040
Run Code Online (Sandbox Code Playgroud)

这是非常令人沮丧的,因为我需要在应用程序中显示设备列表,尽管我可以从设备列表中大胆地过滤掉聚合设备(无论如何它们都不能与 VP AU 一起使用),但我无法排除我们的内置 MacBook 扬声器设备。

也许你们中的某个人已经经历过这个并知道发生了什么以及是否可以解决这个问题。我需要注意一些 kAudioObjectPropertyXX 以从输入列表中排除设备。当然,这可能是苹果方面的一个错误/功能,我只需要想办法解决这个问题。

VP AU 运行良好,尽管使用了设备(我在内置和外部/USB/蓝牙等设备上尝试过),但问题仍然存在。该问题在我可以测试的所有 macOS 版本上都会重现,从 10.13 开始到 11.0 结束。这也会在不同的 Mac 和连接的不同音频设备组上重现。我很好奇,关于这个问题的可用信息几乎为零,这让我想到我做错了什么。

更奇怪的是,当 VP AU 工作时,HALLLab 应用程序指示另一件事:内置输入有两个以上的输入流(好吧,如果只是这样的话,我会幸存下来!)。但它并不表明内置输出已添加输入流,就像在我的应用程序中一样。

以下是有关如何设置 VP 音频单元的 …

macos hal core-audio audiounit

3
推荐指数
1
解决办法
598
查看次数

标签 统计

audiounit ×1

core-audio ×1

hal ×1

macos ×1