Как я могу заставить свое JAVA-приложение с аудио играть по правилам в Linux?

У меня есть JAVA-приложение, UI которого полагается в большой степени на аудио. В Windows и OS X, все хорошо работает; на Linux, однако, приложение требует эксклюзивного доступа к звуковому устройству, a LineUnavailableException брошен и никакой звук не слышат. Я использую Kubuntu 9.10.

Это означает, что никакое другое приложение не может играть аудио, в то время как программа работает и не может даже содержать аудиоустройство, когда программа запускается. Это естественно недопустимо.

Вот код, который я использую для проигрывания аудио:

AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(file);

Clip clip = AudioSystem.getClip();
clip.open(audioInputStream);

clip.start();

this.wait((clip.getMicrosecondLength() / 1000) + 100);

clip.stop();

Я делаю что-то не так? Использование Java должно играть аудио в Linux проигранное дело?

5
задан Ville Sundberg 21 December 2009 в 17:39
поделиться

2 ответа

Боюсь, что аудио в Linux само по себе является утерянной причиной. Но в данном случае это действительно известный Java Bug. Вы должны попытаться выяснить, какую звуковую архитектуру вы используете. Я думаю, что по умолчанию для Ubuntu используется PulseAudio/ALSA. Хотя я не уверен насчет Kubuntu.

Существует известный обходной путь (я сам никогда не пробовал).

Также возможно, что некоторые другие приложения, которые вы запускаете, используют исключительно звуковую карту, так что не забудьте протестировать их с различными приложениями (т.е. с приложениями, которые хорошо играют с другими).

5
ответ дан 14 December 2019 в 04:39
поделиться

Java Sound ужасен для задач с высокой точностью или малой задержкой и почти полностью не работает в Linux. Откажитесь от поставки, прежде чем потратите на это больше времени. После Java Sound я попробовал OpenAL, который тоже не был хорош в Linux. В настоящее время я использую FMOD, который, к сожалению, является закрытым исходным кодом.

Вероятно, лучшим вариантом будет PortAudio. Попробуйте поговорить с разработчиками SIP Communicator.

Я также пробовал RtAudio, но обнаружил, что в нем есть ошибки в реализации ALSA.

1
ответ дан 14 December 2019 в 04:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: