我看书上的代码是:
File file=new File("audio/11042811176905164effc28351.wav");
URI uri=file.toURI();
URL url=uri.toURL();
AudioClip clip=Applet.newAudioClip(url);
clip.play();
但是我写的在运行的时候就是没声音,
声音文件的路径也应该没有问题,我尝试着删除该音频文件
就会说该文件正被java程序使用无法删除 那到底是什么原因没声音呢? 求各位大哥指点一下小弟
File file=new File("audio/11042811176905164effc28351.wav");
URI uri=file.toURI();
URL url=uri.toURL();
AudioClip clip=Applet.newAudioClip(url);
clip.play();
但是我写的在运行的时候就是没声音,
声音文件的路径也应该没有问题,我尝试着删除该音频文件
就会说该文件正被java程序使用无法删除 那到底是什么原因没声音呢? 求各位大哥指点一下小弟
import java.io.IOException;import javax.sound.sampled.AudioSystem;
import javax.sound.sampled.LineUnavailableException;
import javax.sound.sampled.UnsupportedAudioFileException;
import javax.sound.sampled.AudioInputStream;
import javax.sound.sampled.AudioFormat;
import javax.sound.sampled.SourceDataLine;
import javax.sound.sampled.DataLine;public class PlayMusic {
// 程序退出时执行的代码
public void doShutDownWork() {
Runtime.getRuntime().addShutdownHook(new Thread() {
public void run() {
try {
//Toolkit.getDefaultToolkit().beep();
Play();
Play();
} catch (Exception ex) {
}
}
});
}
//播放音频文件
public void Play(){
String fileurl = "file/tada.wav";
try{
AudioInputStream ais = AudioSystem.getAudioInputStream(new File(fileurl));
AudioFormat aif = ais.getFormat();
SourceDataLine sdl = null;
DataLine.Info info = new DataLine.Info(SourceDataLine.class,aif);
sdl = (SourceDataLine)AudioSystem.getLine(info);
sdl.open(aif);
sdl.start();
//play
int nByte = 0;
byte[] buffer = new byte[128];
while(nByte != -1){
nByte = ais.read(buffer,0,128);
if(nByte >= 0){
int oByte = sdl.write(buffer, 0, nByte);
//System.out.println(oByte);
}
}
sdl.stop();
}catch(UnsupportedAudioFileException e){
e.printStackTrace();
} catch (IOException e) {
// TODO 自动产生 catch 区块
e.printStackTrace();
} catch (LineUnavailableException e) {
// TODO 自动产生 catch 区块
e.printStackTrace();
}
}
}
不过为什么 有些音频文件支持不了呢?
我用mid MP3 wma都会抛出
javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from input file异常
在用wav文件的时候也抛出过一次,最后下了个手机铃声的 wav文件 才顺利运行
这是为什么呢?如果只是一部分能够播放 总有点那么显得 美中不足
那么应该如何去解决呢?