Аудиофайл JavaFx не воспроизводится

У меня есть следующий код. Звук не воспроизводится, не понимаю, что я делаю не так. У меня есть файл с именем «Тест» в указанном каталоге. Он имеет формат .mp3.

@Override
public void start(Stage stage) throws Exception
{
    Media sound = new Media("file:///C:/Users/name/Music/HQ/Test.mp3");
    MediaPlayer mediaPlayer = new MediaPlayer(sound);
    mediaPlayer.setAutoPlay(true);

    VBox root = new VBox();
    root.getChildren().addAll();

    Scene scene = new Scene(root, 500, 500);
    stage.setScene(scene);
    stage.show();

}

public static void main(String[] args)
{
    launch(args);
}

person ColonCapsDee    schedule 22.12.2016    source источник
comment
Привет, ОП, нам нужно знать, в чем ошибка, если она есть, кроме того, что она не воспроизводится ... Что-то не так [либо путь, либо файл внутри]   -  person GOXR3PLUS    schedule 23.12.2016
comment
@ GOXR3PLUS эй, ошибки нет. Вот что меня так смущает ):   -  person ColonCapsDee    schedule 23.12.2016


Ответы (3)


Вы должны позвонить mediaPlayer.play(); куда-нибудь. setAutoPlay() устанавливает только свойство autoPlay.

person Calculator    schedule 22.12.2016

1) Если он находится внутри вашего проекта, файл .mp3 в [resources/music/test.mp3]:

Media media = null;
try {
  media = new Media(getClass().getResource("/music/Test.mp3").toURI().toString());
} catch (URISyntaxException e) {
  e.printStackTrace();
} 

2)Если он вне проекта например на file:///C:/Users/name/Music/HQ/Test.mp3

 Media media = null;
 try {
   media = new Media("file:C:/Users/name/Music/HQ/Test.mp3");
 } catch (URISyntaxException e) {
   e.printStackTrace();
 } 

Посмотрите также на этот вопрос: Получение mp3-файла играть с помощью javafx

И здесь как он загружает Image это поможет ты.

person GOXR3PLUS    schedule 22.12.2016
comment
Пробовал то что вы говорите, в обоих случаях программа работает без звука. Я проверил носитель, и у него выбран правильный файл, а также правильный путь к файлу. Проверил звук, ничего не воспроизводится. - person ColonCapsDee; 23.12.2016
comment
Если это поможет, когда я использую media.getDuration(), я получаю UNKNOWN в качестве вывода. - person ColonCapsDee; 23.12.2016
comment
@ColonCapsDee Например, Test.mp3 хорошо работает с проигрывателем Windows Media? VLC точно воспроизведет его, даже если он поврежден ... - person GOXR3PLUS; 23.12.2016
comment
У меня нет проигрывателя Windows Media, я использовал VLC. Я скачаю и проверю, работает ли он на этом. - person ColonCapsDee; 23.12.2016
comment
Ну, я не могу использовать Windows Media Player, но он работает на многих звуковых проигрывателях (itunes, VLC, QuickTime Player и т. д.). - person ColonCapsDee; 23.12.2016
comment
Итак, я протестировал тот же код на своем ноутбуке (другой ПК). Звуки работают, значит, что-то не так с моим Eclipse или ПК? - person ColonCapsDee; 23.12.2016
comment
@ColonCapsDee Установлена ​​та же версия Java? - person GOXR3PLUS; 23.12.2016

У меня такая же проблема. Я хотел воспроизвести 4-минутный mp3-трек на экране меню в своей игре. Я конвертировал из mp3 в wav. Еще ничего. Затем я попробовал более короткий звук (звук гонга на 1 секунду)... и это сработало! Однако звук был словно обрезан посередине. Что ж, это вызвало у меня подозрения, поэтому я решил запустить это внутри потока, и это сработало! Затем я переключился обратно на основной звук, и теперь он играл просто отлично.

Пока я не понимаю двух вещей:

  • почему запуск этого внутри Thread помогает
  • почему .wav работает, а .mp3 нет

На данный момент это не так много, но, возможно, это кому-то поможет :) Я обновлю свой ответ, как только узнаю!

person Kamil Latosinski    schedule 01.05.2019