设置声音输出/输入

时间:2011-04-23 22:30:52

标签: objective-c cocoa macos audio

我一直在寻找网络,但我不知道是否可能:Cocoa Mac OS X应用程序可以更改声音输入/输出设备吗?如果是这样,怎么回事?

2 个答案:

答案 0 :(得分:2)

  

Cocoa Mac OS X应用程序可以更改声音输入/输出设备吗?

是的,setting relevant Audio System Object property

  

如果是这样,怎么回事?

可能是因为用户可能想要在应用程序中更改默认输入或输出设备,而不必在之前和之后跳转到Sound prefpane或使用Sound菜单。

答案 1 :(得分:0)

我知道这是一个很老的帖子,但是这些天我一直在努力寻找一种使用代码来改变声音输入/输出设备的方法,我终于找到了如何做到这一点。如果其他人遇到同样的问题,这就是答案!

有一个名为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

其中newDeviceIDAudioDeviceID的实例,表示您要选择的设备的ID。此外,可以使用以下代码获取所有可用设备的列表:

AudioDeviceID dev_array[64];
AudioHardwareGetProperty(kAudioHardwarePropertyDevices, &propertySize, dev_array);
int numberOfDevices = (propertySize / sizeof(AudioDeviceID));