簡體   English   中英

如何使用Java播放WAV文件?

[英]How can I play a WAV file using Java?

我使用客戶端和服務器發送WAV文件,但是我想在收到WAV時播放。 我嘗試了這種方法,但是沒有用:

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

這是我得到的異常:

“錯誤!它沒有用!java.io.IOException:無法運行程序“ C:\\ Documents”:CreateProcess錯誤= 193,%1不是有效的Win32應用程序”

我究竟做錯了什么?

您需要執行音頻播放器程序(可能是Windows Media Player或類似的程序),然后將文件名(文件的完整路徑)作為參數傳遞進來:

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

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

那應該工作。

內置WAV播放支持的Java有什么問題? 您可以使用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();
    }
}

不用指定要使用的媒體播放器,而是讓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提供的所有選項(start是cmd.exe的內置操作,而不是獨立程序,這就是為什么您必須運行cmd.exe而不是“ start.exe”的原因),請執行

start /h

是否必須使用默認音頻播放器? 如果不是這樣,您可能想研究一下Java的AudioSystem

舊問題,但有記錄:

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

嘗試:

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

請注意額外的單引號。 我什至不確定您的方法是否會奏效,但請嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM