Hallo Leute!
Ich verwende folgenden Code für einen AudioPlayer. Unter Windows funktioniert er prima, aber unter Linux bekomme ich immer eine LineUnavailableException. Kann mir jemand sagen woran das liegt? Vielen Dank.
[/code]
Ich verwende folgenden Code für einen AudioPlayer. Unter Windows funktioniert er prima, aber unter Linux bekomme ich immer eine LineUnavailableException. Kann mir jemand sagen woran das liegt? Vielen Dank.
Code:
import java.io.*;
import javax.sound.sampled.*;
class AudioPlayer
{
private static final int EXTERNAL_BUFFER_SIZE = 128000;
File soundFile;
AudioInputStream audioInputStream;
public AudioPlayer()
{
soundFile = new File("test.wav");
audioInputStream = null;
}
public void play()
{
try
{
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
}
catch (Exception e)
{
MainClass.tfLog.setText("Error by trying to create AudioInputStream!");
}
AudioFormat audioFormat = audioInputStream.getFormat();
SourceDataLine line = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class, audioFormat);
try
{
line = (SourceDataLine) AudioSystem.getLine(info);
line.open(audioFormat);
}
catch (LineUnavailableException e)
{
MainClass.tfLog.setText("Error by trying to reach SourceDataLine!");
}
catch (Exception e)
{
MainClass.tfLog.setText("Error by trying to open SourceDataLine!");
}
line.start();
int nBytesRead = 0;
byte[] abData = new byte[EXTERNAL_BUFFER_SIZE];
while (nBytesRead != -1)
{
try
{
nBytesRead = audioInputStream.read(abData, 0, abData.length);
}
catch (IOException e)
{
MainClass.tfLog.setText("Error by trying to read stream size!");
}
if (nBytesRead >= 0)
{
int nBytesWritten = line.write(abData, 0, nBytesRead);
}
}
line.drain();
line.close();
}
}