#objective-c #cocoa #macos #audio
#objective-c #cocoa #macos #Аудио
Вопрос:
Я искал по всему Интернету, но я не знаю, возможно ли это: может ли приложение Cocoa для Mac OS X изменить устройство ввода / вывода звука? Если да, то почему?
Ответ №1:
может ли приложение Cocoa для Mac OS X изменить устройство ввода / вывода звука?
Да, с помощью настройка the соответствующее свойство объекта аудиосистемы.
Если да, то почему?
Возможно, потому, что пользователь может захотеть изменить устройство ввода или вывода по умолчанию из приложения, вместо того, чтобы переходить к предварительной панели звука до и после или дополнительно использовать звуковое меню.
Комментарии:
1. Я не знал, что дополнительное звуковое меню может изменять устройства ввода / вывода. Как я могу это включить?
2. Джейлборк: удерживайте нажатой клавишу Option, когда вы нажимаете на нее.
3. Черт. Это потрясающе знать. Вообще не очень обнаруживаемый. Вероятно, должно быть там все время…
4. К сожалению, ссылки не работают. 🙁
5. @uchuugaka: Пожалуйста, отправьте радар.
Ответ №2:
Я знаю, что это старый пост, но в эти дни я изо всех сил пытался найти способ изменить устройство ввода / вывода звука с помощью кода, и я, наконец, нашел, как это сделать. На случай, если кто-то еще столкнется с такой же проблемой, вот ответ!
Существует утилита командной строки под названием SwitchAudio-OSX (https://code.google.com/p/switchaudio-osx /), которая позволяет переключать источник звука с терминала. Это открытый исходный код, и вы можете найти последнюю версию здесь:https://github.com/deweller/switchaudio-osx .
В любом случае, вы можете использовать эти строки для изменения устройства ввода / вывода звука:
UInt32 propertySize = sizeof(UInt32);
AudioHardwareSetProperty(kAudioHardwarePropertyDefaultInputDevice, propertySize, amp;newDeviceID); // To change the input device
AudioHardwareSetProperty(kAudioHardwarePropertyDefaultOutputDevice, propertySize, amp;newDeviceID); // To change the output device
AudioHardwareSetProperty(kAudioHardwarePropertyDefaultSystemOutputDevice, propertySize, amp;newDeviceID); // To change the system output device
Где newDeviceID
является экземпляром AudioDeviceID
и представляет идентификатор устройства, которое вы хотите выбрать. Кроме того, с помощью этого кода можно получить список всех доступных устройств:
AudioDeviceID dev_array[64];
AudioHardwareGetProperty(kAudioHardwarePropertyDevices, amp;propertySize, dev_array);
int numberOfDevices = (propertySize / sizeof(AudioDeviceID));