【发布时间】:2011-04-23 22:30:51
【问题描述】:
我一直在网上寻找,但我不知道是否有可能:Cocoa Mac OS X 应用程序可以更改声音输入/输出设备吗?如果有,怎么会?
【问题讨论】:
标签: objective-c cocoa macos audio
我一直在网上寻找,但我不知道是否有可能:Cocoa Mac OS X 应用程序可以更改声音输入/输出设备吗?如果有,怎么会?
【问题讨论】:
标签: objective-c cocoa macos audio
Cocoa Mac OS X 应用程序能否更改声音输入/输出设备?
是的,settingrelevant Audio System Object property。
如果是这样,怎么会?
可能是因为用户可能希望从应用程序中更改默认输入或输出设备,而不是必须在前后跳转到声音预面板或额外使用声音菜单。
【讨论】:
我知道这是一篇旧帖子,但这些天我一直在努力寻找一种使用代码更改声音输入/输出设备的方法,我终于找到了方法。万一其他人遇到同样的问题,这就是答案!
有一个名为 SwitchAudio-OSX (https://code.google.com/p/switchaudio-osx/) 的命令行实用程序允许您从终端切换音频源。它是开源的,你可以在这里找到最新版本:https://github.com/deweller/switchaudio-osx。
无论如何,您可以使用这些行来更改声音输入/输出设备:
UInt32 propertySize = sizeof(UInt32);
AudioHardwareSetProperty(kAudioHardwarePropertyDefaultInputDevice, propertySize, &newDeviceID); // To change the input device
AudioHardwareSetProperty(kAudioHardwarePropertyDefaultOutputDevice, propertySize, &newDeviceID); // To change the output device
AudioHardwareSetProperty(kAudioHardwarePropertyDefaultSystemOutputDevice, propertySize, &newDeviceID); // To change the system output device
其中newDeviceID 是AudioDeviceID 的一个实例,表示您要选择的设备的ID。此外,可以使用以下代码获取所有可用设备的列表:
AudioDeviceID dev_array[64];
AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &propertySize, dev_array);
int numberOfDevices = (propertySize / sizeof(AudioDeviceID));
【讨论】: