<Sound Dev> sound on Linux
cyberGn0m
cy6ergn0m at gmail.com
Tue Oct 13 22:22:12 PDT 2009
I already wrote the same code but it still does not work. It conflicts with
flash player and with mplayer (in any mode).
2009/10/14 Paulo Levi <i30817 at gmail.com>
> I was just looking at this problem a while ago... opening the java
> sound audio engine instead of the default one might be a solution.
> Actually right now i'm using the method bellow, however, there are
> still some errors on a test machine that exhibited errors before (but
> no exception anymore) - the errors come in a Fedora (Pulse-Audio)
> linux. Obviously if it can't open the mixer it will try to open the
> java sound audio engine one - that should take take of one of the
> errors java not playing, but still might cause the second - native
> applications not playing.
> Actually the guy that is running the tests for me in that machine
> reports that audio is inaudible still, but no exception is raised if i
> use this.
>
> /**
> * Lines can fail to open because they are already in use.
> * Java sound uses OSS and some linuxes are using pulseaudio.
> * OSS needs exclusive access to the line, and pulse audio
> * highjacks it. Try to open another line.
> * @param format
> * @return a open line
> * @throws IllegalStateException if it can't open a dataline for the
> * audioformat.
> */
> private SourceDataLine getSourceDataLine(AudioFormat format) {
> Exception audioException = null;
> try {
> DataLine.Info info = new
> DataLine.Info(SourceDataLine.class, format);
>
> for (Mixer.Info mi : AudioSystem.getMixerInfo()) {
> SourceDataLine dataline = null;
> try {
> Mixer mixer = AudioSystem.getMixer(mi);
> dataline = (SourceDataLine) mixer.getLine(info);
> dataline.open(format);
> dataline.start();
> return dataline;
> } catch (Exception e) {
> audioException = e;
> }
> if (dataline != null) {
> try {
> dataline.close();
> } catch (Exception e) {
> }
> }
> }
> } catch (Exception e) {
> throw new IllegalStateException("Error trying to aquire
> dataline.", e);
> }
> if (audioException == null) {
> throw new IllegalStateException("Couldn't aquire a
> dataline, this computer doesn't seem to have audio output?");
> } else {
> throw new IllegalStateException("Couldn't aquire a
> dataline, probably because all are in use. Last exception:",
> audioException);
> }
> }
>
--
-----------------------------------------------------------------
Всего наилучшего
<y6erGn0m.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.openjdk.java.net/pipermail/sound-dev/attachments/20091014/62b09197/attachment.html
More information about the sound-dev
mailing list