OS X 以编程方式设置默认输出设备

问题描述 投票:0回答:1

我一直在尝试更改计算机向哪个音频设备发送声音。我的最终目标是创建一个程序,即使将耳机插入耳机插孔,也可以使我的笔记本电脑输出到其内置扬声器。

我偶然发现了 this 项目,但它使用的方法(特别是

AudioHardwareSetProperty
)已被弃用。它也不起作用(它会说它改变了输出设备,但声音仍然会传到我的耳机)。

CoreAudio 的文档似乎非常少,我在网上找不到任何不使用该功能的代码。如果已弃用的函数能够满足我的要求,我会使用它,但事实并非如此。我不确定它是否坏了或者只是没有按照我的想法做,但这最终并不重要。

我试图查看

AudioHardwareSetProperty
上的评论,但我在讨论部分发现的只是这个:

请注意,在属性值发生变化之前不应被视为已更改 由于许多属性值发生更改,HAL 已调用侦听器 异步地。另请注意,相同的功能由 函数 AudioObjectGetPropertyData()。

这显然不是真的,因为我知道

AudioObjectGetPropertyData
用于获取有关一个特定音频设备的信息。

我想要用 CoreAudio 实现的功能可行吗?

objective-c c macos core-audio osx-yosemite
1个回答
0
投票

借助 macOS 15 中引入的新 CoreAudio API,这非常简单:

let system = AudioHardwareSystem.shared
let devices = try system.devices
let newDefaultOutput = ... // Select target device from devices
try system.setDefaultOutputDevice(newDefaultOutput)
try system.setDefaultSoundEffectsDevice(newDefaultOutput) // Optional
© www.soinside.com 2019 - 2024. All rights reserved.