gpt4 book ai didi

objective-c - 从核心音频获取内置输出

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:31 26 4
gpt4 key购买 nike

是否可以可靠地获取 Mac 内置输出的 AudioDeviceID?我试过使用 kAudioHardwarePropertyDefaultOutputDevice 获取当前选择的输出设备,但这可以是任何旧设备,具体取决于用户在系统偏好设置中选择的内容——我只想要内置扬声器的 ID。

AudioObjectPropertyAddress theAddress = { kAudioHardwarePropertyDefaultInputDevice,
kAudioObjectPropertyScopeGlobal,
kAudioObjectPropertyElementMaster };

verify_noerr (AudioObjectGetPropertyData(kAudioObjectSystemObject,
&theAddress,
0,
NULL,
&propsize,
&inputDevice));

目前,我正在获取所有设备的列表,并通过执行 name == "Built-in Output" 检查设备的名称字符串。这在我的机器上有效,但似乎不是一个非常可靠的解决方案!是否有类似 kAudioHardwarePropertyBuiltInOutputDevice 的东西?

最佳答案

@Equinox2000 的答案有效,但有一种方法可以避免繁重的字符串比较。只需使用 kAudioDevicePropertyTransportType 的选择器获取另一个 AudioObject 的属性。

aopa.mSelector = kAudioDevicePropertyTransportType;
aopa.mScope = kAudioObjectPropertyScopeGlobal;
UInt32 size = sizeof(UInt32);
UInt32 transportType = 0;
OSStatus status = AudioObjectGetPropertyData(device.deviceId, &address, 0, NULL, &size, & transportType);
if (transportType == kAudioDeviceTransportTypeBuiltIn) // that's all the checks
// do something

关于objective-c - 从核心音频获取内置输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11347989/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com