java音乐播放之IO流处理 - gavanwanggw - 博客园

这个类仅仅能一直播放。知道音乐结束。

比AudioCilp要好一点。

import java.io.*;

import javax.sound.sampled.*;

public class Test {

public static void main(String\[\] args) {
    AePlayWave apw=new AePlayWave("./111.wav");
    apw.start();
}

}

//播放声音的类
class AePlayWave extends Thread {

private String filename;
public AePlayWave(String wavfile) {
    filename = wavfile;

}

public void run() {

    File soundFile = new File(filename);

    AudioInputStream audioInputStream = null;
    try {
        audioInputStream = AudioSystem.getAudioInputStream(soundFile);
    } catch (Exception e1) {
        e1.printStackTrace();
        return;
    }

    AudioFormat format = audioInputStream.getFormat();
    SourceDataLine auline = null;
    DataLine.Info info = new DataLine.Info(SourceDataLine.class, format);

    try {
        auline = (SourceDataLine) AudioSystem.getLine(info);
        auline.open(format);
    } catch (Exception e) {
        e.printStackTrace();
        return;
    }

    auline.start();
    int nBytesRead = 0;
    byte\[\] abData = new byte\[512\];

    try {
        while (nBytesRead != -1) {
            nBytesRead = audioInputStream.read(abData, 0, abData.length);
            if (nBytesRead >= 0)
                auline.write(abData, 0, nBytesRead);
        }
    } catch (IOException e) {
        e.printStackTrace();
        return;
    } finally {
        auline.drain();
        auline.close();
    }

}

}


原网址: 访问
创建于: 2024-02-27 09:49:40
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论