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

Posted

技术标签:

【中文标题】从计算机的文件中播放 Java 中的 .wav 文件【英文标题】:Playing .wav file in java from file from computer 【发布时间】:2014-03-18 02:14:00 【问题描述】:
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 它给了我 catch 语句。

第二次尝试是将我录制的 .wav 文件放在 mediafire 上。然而,这并没有奏效。 “线程“主”javax.sound.sampled.UnsupportedAudioFileException 中的异常:无法从输入 URL 获取音频输入流”

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

【问题讨论】:

【参考方案1】:

第一次尝试

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

这不是您将URL 构造为File 的方式。相反,您应该使用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();

【讨论】:

非常感谢。但是,我无法获得处理计算机文件的第一种方法。不过,奇怪的是,它适用于下载的文件。

以上是关于从计算机的文件中播放 Java 中的 .wav 文件的主要内容,如果未能解决你的问题,请参考以下文章

从内存流播放 mp3/wav 文件到网页

从视频文件中提取wav文件

.wav 文件中的心率 (BPM) 计算

如何使用 java 播放 .wav 文件

MP3/wav 音频文件的持续时间

SoundPlayer 不播放任何捆绑的 Windows 声音 PCM wav 文件