У меня есть рабочая программа, написанная на Java с API Java Sound, которая способна одновременно воспроизводить несколько аудиофайлов в формате MP3 на разных звуковых картах USB на одном компьютере. Он отлично работает в Linux. В Mac OS X, однако, это не так.
Информация о моем звуковом микшере:
[0] Java Sound Audio Engine
[1] Built-in Input
[2] USB Advanced Audio Device
Если я выберу микшер [0] для воспроизведения файла, он будет успешно работать со встроенной звуковой картой. Если я выберу микшер [2] для воспроизведения файла, я получу следующее исключение:
Exception in thread "Thread-1" java.lang.IllegalArgumentException: Line unsupported: interface SourceDataLine supporting format PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
at com.sun.media.sound.SimpleInputDevice.getLine(SimpleInputDevice.java:142)
at javax.sound.sampled.AudioSystem.getSourceDataLine(AudioSystem.java:633)
at pt.mobbit.sensorsloader.actuators.multiaudio.AudioPlayer$AudioPlayerThread.run(AudioPlayer.java:135)
at java.lang.Thread.run(Thread.java:613)
Однако, если я изменю Устройство вывода в Системных настройках OS X на Звуковую карту USB, а затем в своем java-приложении выберу микшер [0], звук выходит через звуковую карту USB. Это заставляет меня поверить, что звуковая карта USB также может воспроизводить файлы mp3 в OS X, но только если это не основное устройство вывода.
Кто-нибудь знает, как я могу выводить звук на свою звуковую карту USB в OS X без необходимости быть основным устройством вывода системы?