Windows7上的Java声音API

Windows7上的Java声音API,java,audio,windows-7,Java,Audio,Windows 7,我在上找到了这个测试代码 它在OSX上工作,但在我的PC Win7上不工作。Win7上的声音API有什么问题吗? 我安装了几个声音设备(集成和FireWire AudioInterface),两个都试过了,什么也没听到 import javax.sound.sampled.*; import java.io.*; /* * SoundTest.java * * Created on 1. August 2003, 21:06 */ /** * * @author Adminis

我在上找到了这个测试代码 它在OSX上工作,但在我的PC Win7上不工作。Win7上的声音API有什么问题吗? 我安装了几个声音设备(集成和FireWire AudioInterface),两个都试过了,什么也没听到

import javax.sound.sampled.*;
import java.io.*;

/*
 * SoundTest.java
 *
 * Created on 1. August 2003, 21:06
 */

/**
 *
 * @author  Administrator
 */
public class SoundTest {

    /** Creates a new instance of SoundTest */
    public SoundTest() {
    }

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        try{
            AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(new File("sample.wav"));
            AudioFormat af     = audioInputStream.getFormat();
            int size      = (int) (af.getFrameSize() * audioInputStream.getFrameLength());
            byte[] audio       = new byte[size];
            DataLine.Info info      = new DataLine.Info(Clip.class, af, size);
            audioInputStream.read(audio, 0, size);

           // for(int i=0; i < 32; i++) {
                Clip clip = (Clip) AudioSystem.getLine(info);
                clip.open(af, audio, 0, size);
                clip.start();
           // }
        }catch(Exception e){ e.printStackTrace(); }

    }

}
import javax.sound.sampled.*;
导入java.io.*;
/*
*SoundTest.java
*
*创建于1。2003年8月21:06
*/
/**
*
*@作者管理员
*/
公开课声音测试{
/**创建SoundTest的新实例*/
公共声音测试(){
}
/**
*@param指定命令行参数
*/
公共静态void main(字符串[]args){
试一试{
AudioInputStream AudioInputStream=AudioSystem.getAudioInputStream(新文件(“sample.wav”);
AudioFormat af=audioInputStream.getFormat();
int size=(int)(af.getFrameSize()*audioInputStream.getFrameLength());
字节[]音频=新字节[大小];
DataLine.Info=newdataline.Info(Clip.class,af,size);
audioInputStream.read(音频,0,大小);
//对于(int i=0;i<32;i++){
Clip Clip=(Clip)AudioSystem.getLine(info);
剪辑。打开(af,音频,0,大小);
clip.start();
// }
}catch(异常e){e.printStackTrace();}
}
}
谢谢回复


J

如果您使用的是Java7,我建议您尝试使用JavaFXAPI。它们更加先进,跨平台兼容。在任何人询问之前,使用JavaFX时,您并不局限于web。

您举了一个糟糕的例子,它混淆了两种不同方法的代码(自己阅读音频流,而不是让clip处理音频流)

这里的顶部答案显示了如何通过剪辑播放