在Java项目中引用和播放mp3文件

时间:2014-12-29 21:00:37

标签: java audio mp3

我目前正在开发一个项目,可以在点击按钮时播放某些歌曲。 我现在有我的代码工作,以便它正确播放mp3文件,但它不是我想要的方式。现在我只是从我的桌面引用mp3文件,但我希望能够从项目本身引用它。我创建了一个名为resources的源文件夹,我在其中有一个名为music的文件夹,我将mp3文件放入其中。我虽然无法确定如何正确引用mp3文件。

这是我当前使用桌面播放歌曲的代码:

import java.io.BufferedInputStream;
import java.io.FileInputStream;

import javazoom.jl.player.Player;

public class MP3 {
private String filename;
private Player player;

// constructor that takes the name of an MP3 file
public MP3(String filename) {
    this.filename = filename;
}

public void close() {
    if (player != null)
        player.close();
}

// play the MP3 file to the sound card
public void play() {
    try {
        FileInputStream fis = new FileInputStream(filename);
        BufferedInputStream bis = new BufferedInputStream(fis);
        player = new Player(bis);
    } catch (Exception e) {
        System.out.println("Problem playing file " + filename);
        System.out.println(e);
    }

    // run in new thread to play in background
    new Thread() {
        public void run() {
            try {
                player.play();
            } catch (Exception e) {
                System.out.println(e);
            }
        }
    }.start();

}

// test client
public static void main(String[] args) {
    String filename = "/Users/username/desktop/LoveStory.mp3";
    MP3 mp3 = new MP3(filename);
    mp3.play();

    // when the computation is done, stop playing it
    mp3.close();

    // play from the beginning
    mp3 = new MP3(filename);
    mp3.play();

}

}

1 个答案:

答案 0 :(得分:0)

将它放在resources目录中,就像你做的那样,然后用这样的东西来引用它:

MP3.class.getResource("/resources/LoveStory.mp3");

这样做的好处是它应该来自.jar文件,但也可以来自Eclipse(或者你正在使用的任何东西)。

如果您希望将其视为InputStream,它看起来就像您一样,那么您可以使用getResourceAsStream()方法:

InputStream stream = MP3.class.getClassLoader().getResourceAsStream("/resources/LoveStory.mp3");

放置resources目录的确切位置取决于您的设置,但src内部可能正确。