Используйте JLayer для воспроизведения mp3-ресурса

Я пытаюсь использовать JLayer для воспроизведения mp3. Файл находится в моей банке, но я не могу понять, как заставить его воспроизводиться. Как мне дать моему приложению путь к mp3-файлу в том же пакете, что и мои классы? Вот мой код:

File file = new File("audio.mp3");

System.out.println("located media at "+file.getAbsolutePath());

AdvancedPlayer player = null;

try {

    player = new AdvancedPlayer(new FileInputStream(file), 

    FactoryRegistry.systemRegistry().createAudioDevice());
} catch (FileNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
} catch (JavaLayerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
System.out.println("Starting the music... ");
try {
    player.play();
} catch (JavaLayerException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

person Noodly_Doodly    schedule 15.11.2014    source источник


Ответы (2)


Вы не должны использовать File для ресурсов в исходных папках.
Попробуйте
InputStream is = getClass().getResourceAsStream("/(package name)/audio.mp3");

person Zhao Yun    schedule 17.05.2018

Почему бы вам не попробовать абсолютный путь, чтобы воспроизвести песню. Используйте этот код для справки:

FileInputStream fis = new FileInputStream("G:\\Songs\\fireinthehole.mp3");
player = new AdvancedPlayer(fis);
player.play();

Обратите внимание на использование двойного «\» в пути.

person mysticfyst    schedule 16.11.2014