Ошибка с MediaView/Media/MediaPlayer в JavaFX

219
16 апреля 2018, 01:21

Ошибка с MediaView/Media/MediaPlayer, при запуске кода:

Pane pane=new Pane();
Media media = new Media(file);
MediaPlayer mediaPlayer = new MediaPlayer(media);
mediaView.setMediaPlayer(mediaPlayer);
mediaPlayer.play();
pane.getChildren().add(pane);
pane.setPrefSize(media.getWidth(), media.getHeight());
System.out.println(media.getDuration().toSecond());
System.out.println(media.getWidth());
System.out.println(media.getHeight());

В консоль выводится:

0

0

0

Это приводит к некорректному отображению медиа.

Answer 1

Во-первых, сразу после создания плеер находится в состоянии UNKNOWN. Перед тем, как проверять размеры, нужно дождаться, когда плеер перейдет в состояние READY:

    mediaPlayer.setOnReady(() -> {
        System.out.println(media.getDuration().toSeconds());
        System.out.println(media.getWidth());
        System.out.println(media.getHeight());
    });

Во-вторых, если произойдет ошибка, то плеер не перейдет в состояние READY и останется в состоянии UNKNOWN. Чтобы отследить это, добавьте код обработки ошибки, например:

    mediaPlayer.setOnError(() -> {
        System.out.println(mediaPlayer.getError());
    });

Это поможет вам определить проблему и двигаться дальше.

К примеру, для файла big_buck_bunny.mp4 в Java 8u92 под Windows XP я получил:

MediaException: MEDIA_UNSUPPORTED : [com.sun.media.jfxmediaimpl.platform.gstreamer.GSTMediaPlayer@115a68d] ERROR_MEDIA_AAC_FORMAT_UNSUPPORTED: ERROR_MEDIA_AAC_FORMAT_UNSUPPORTED

Следовательно мне либо нужен файл в другом формате, либо нужно установить кодеки, указанные в системных требованиях в разделах "JavaFX Media" на страницах:
JavaFX 2 Certified System Configurations
JavaFX 2.2.5 System Requirements

Answer 2
pane.getChildren().add(pane);

Добавление дочерним объектом самого себя едва ли хорошая идея.

READ ALSO
Как получить частоты из звука андроид

Как получить частоты из звука андроид

Как получить частоты звука на андроидВедь из аудиофайла я получаю массив байтов

197
Не могу понять смысл слова static

Не могу понять смысл слова static

Ребят, помогите мне понять, зачем перед функцией писать слово static?

194
Проблема в шейдере при отрисовки

Проблема в шейдере при отрисовки

Продолжение к моей прошлой работеЯ продвинулся дальше

204