即使sun.audio API说.wav是一个受支持的文件,显然我所拥有的文件一定不是。一个.aiff文件现在正在工作但不是这样我找到了一个更好的方法,虽然有点复杂。
String strFilename = "C:\\Documents and Settings\\gkehoe\\Network\\GIM\\Explode.aiff";
File soundFile = new File(strFilename);
AudioInputStream audioInputStream = null;
try
{
audioInputStream = AudioSystem.getAudioInputStream(soundFile);
}
catch (Exception e)
{
e.printStackTrace();
}
AudioFormat audioFormat = audioInputStream.getFormat();
SourceDataLine line = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class,
audioFormat);
try
{
line = (SourceDataLine) AudioSystem.getLine(info);
/*
The line is there, but it is not yet ready to
receive audio data. We have to open the line.
*/
line.open(audioFormat);
}
catch (LineUnavailableException e)
{
e.printStackTrace();
System.exit(1);
}
catch (Exception e)
{
e.printStackTrace();
System.exit(1);
}
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)
{
e.printStackTrace();
}
if (nBytesRead >= 0)
{
int nBytesWritten = line.write(abData, 0, nBytesRead);
}
}
line.drain();
/*
All data are played. We can close the shop.
*/
line.close();
答案 0 :(得分:0)
根据source code,它无法识别为支持的文件格式。
答案 1 :(得分:0)
支持Wav文件,但有许多变量,其中一些不受支持。 例如,如果wav以48000而不是44100编码,或者以24或32位而不是16位编码进行编码,则可能会出现无法识别的格式异常。
你得到了什么确切的错误?
wav文件的规格(属性)是什么?
可以使用Audacity等工具从一个wav转换为兼容的wav。我用于wav文件的格式具有以下属性:
16-bit encoding
little endian
44100 sample rate
stereo
我并没有真正仔细研究代码示例本身。我喜欢this播放示例。