从计算机文件中播放java中的.wav文件

时间:2014-03-18 02:14:01

标签: java audio wav

package soundTest;

import java.applet.*;
import java.net.*;
import javax.swing.*;
import javax.sound.sampled.*;
import java.io.*;
import java.util.*;

public class SoundTest {

public static void main(String[] args) throws Exception {

    try {
        AudioClip clip1 = Applet.newAudioClip(new URL(new File("E0.wav").getAbsolutePath())); 
        clip1.play();
    } catch (MalformedURLException murle) {
        System.out.println(murle);
    }

    URL url = new URL(
            "http://www.mediafire.com/listen/tok9j9s1hnogj1y/downloads/E0.wav"); 
    Clip clip = AudioSystem.getClip();
    AudioInputStream ais = AudioSystem.getAudioInputStream(url);
    clip.open(ais);

    URL url2 = new URL(
            "http://www.villagegeek.com/downloads/webwavs/Austin_Powers_death.wav");
    Clip clip2 = AudioSystem.getClip();
    AudioInputStream ais2 = AudioSystem.
            getAudioInputStream(url2);
    clip2.open(ais2);
    clip.loop(1);
    clip2.loop(Clip.LOOP_CONTINUOUSLY);

    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            JOptionPane.showMessageDialog(null, "Close to exit!");
        }
    });
}

}

我无法弄清楚如何在java中从我的计算机(而不是从URL)播放wav文件。我确信我把它放在了正确的区域,SRC(我也把它放在几乎所有其他空间以防万一......)。

首次尝试来自http://www.cs.cmu.edu/~illah/CLASSDOCS/javasound.pdf 它给了我一个捕获声明。

第二次尝试是将我录制的.wav文件放在mediafire上。但是,这没有用。 "线程中的异常" main" javax.sound.sampled.UnsupportedAudioFileException:无法从输入URL获取音频输入流"

第三个示例运行正常,但与我的文件不同,它是来自在线的文件。单击那个时,它会将您带到一个音频播放器,而mediafire链接会将您带到一个包含其他内容的页面和一些播放该文件的应用程序。

1 个答案:

答案 0 :(得分:1)

首次尝试

AudioClip clip1 = Applet.newAudioClip(new URL(new File("E0.wav").getAbsolutePath())); 

这不是URLFile的构建方式。相反,您应该使用File#getURI#getURL

AudioClip clip1 = Applet.newAudioClip(new File("/full/path/to/audio.wav").toURI().toURL());

第二次尝试

mediafire正在返回一个html响应,而不是音频文件...你可以用...来测试它。

URL url = new URL("http://www.mediafire.com/listen/tok9j9s1hnogj1y/downloads/E0.wav");    
try (InputStream is = url.openStream()) {
    int in = -1;
    while ((in = is.read()) != -1) {
        System.out.print((char)in);
    }
} catch (IOException exp) {
    exp.printStackTrace();
}

第三次尝试

open剪辑,但从不start它......

URL url2 = new URL("http://www.villagegeek.com/downloads/webwavs/Austin_Powers_death.wav");
Clip clip2 = AudioSystem.getClip();
AudioInputStream ais2 = AudioSystem.getAudioInputStream(url2);
clip2.open(ais2);
clip2.start();