Ошибка с 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
Это приводит к некорректному отображению медиа.
Во-первых, сразу после создания плеер находится в состоянии 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
pane.getChildren().add(pane);
Добавление дочерним объектом самого себя едва ли хорошая идея.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Как получить частоты звука на андроидВедь из аудиофайла я получаю массив байтов
Ребят, помогите мне понять, зачем перед функцией писать слово static?