如何使用Java播放WAV文件?

时间:2009-05-02 19:11:42

标签: java

我使用客户端和服务器发送WAV文件,但我希望在收到WAV时播放。我尝试这种方法,但它不起作用:

Runtime.getRuntime().exec("C:\\Documents and   Settings\\Administratore\\Desktop\\gradpro\\test1\\s1.wav") ;

这是我得到的例外:

  

“错误!它不起作用!java.io.IOException:无法运行程序”C:\ Documents“:CreateProcess error = 193,%1不是有效的Win32应用程序”

我做错了什么?

6 个答案:

答案 0 :(得分:2)

您需要执行音频播放器程序(可能是Windows媒体播放器或类似的东西),然后将文件名(文件的完整路径)作为参数传递:

String wavPlayer = "/path/to/winmediaplayer.exe";
String fileToPlay = "/path/to/wav/file.wav";

Runtime.getRuntime().exec(wavPlayer, new String[]{fileToPlay}) ;

这应该有效。

答案 1 :(得分:1)

Javas内置WAV播放支持有什么问题?您可以使用AudioClip播放它:

private void playBackClip(String fileName) {
    try {
        AudioInputStream soundStream = null;
        if (fileName.startsWith("res:")) {
            soundStream = AudioSystem.getAudioInputStream(
                Object.class.getResourceAsStream(fileName.substring(4)));
        } else {
            File audioFile = resMap.get(fileName);
            soundStream = AudioSystem.getAudioInputStream(audioFile);
        }
        AudioFormat streamFormat = soundStream.getFormat();
        DataLine.Info clipInfo = new DataLine.Info(Clip.class,
                streamFormat);

        Clip clip = (Clip) AudioSystem.getLine(clipInfo);
        soundClip = clip;
        clip.open(soundStream);
        clip.setLoopPoints(0, -1);
        clip.start();
    } catch (UnsupportedAudioFileException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (LineUnavailableException e) {
        e.printStackTrace();
    }
}

答案 2 :(得分:0)

是否必须使用默认音频播放器? 如果不是,您可能想要查看Java的AudioSystem

答案 3 :(得分:0)

不要指定要使用的媒体播放器,而是让Windows为您查找:

String comspec = System.getenv().get("ComSpec");
String fileToPlay = "/path/to/wav/file.wav";

Runtime.getRuntime().exec(comspec, new String[]{"/c", "start", fileToPlay}) ;

你基本上是这样做的:

cmd.exe /c start path_to_wav_file.wav

要查看启动给你的所有选项(start是cmd.exe的内置操作,而不是一个独立的程序,这就是你必须运行cmd.exe而不是'start.exe'的原因) ,做

start /h

答案 4 :(得分:0)

老问题,但记录:

java.awt.Desktop.getDesktop().open(new java.io.File(my_filename));

答案 5 :(得分:-4)

尝试:

Runtime.getRuntime().exec("'C:\Documents and Settings\Administratore\Desktop\gradpro\test1\s1.wav'") ;

请注意额外的单引号。我甚至不确定你的方法是否会起作用,但是请放手一搏。