java windows video javafx media-player

JavaFX MediaPlayer: MP4 no se reproducirá en Windows 7



video media-player (2)

Ambiente:

  • Ganar 10 prof.
  • Java 8U144 (pero probado con 8U177 también)

techslides.com un mp4 de este sitio web como muestra para mi prueba: techslides.com

Mi código (Nota: uso un FX Framwork personalizado, así que solo te muestro el método de creación de mi controlador que configura el reproductor):

@Override protected BorderPane createView() { final BorderPane view = new BorderPane(); final Media media = new Media(getClass().getResource("small.mp4").toString()); final MediaPlayer player = new MediaPlayer(media); player.setCycleCount(MediaPlayer.INDEFINITE); player.setRate(1.25); player.setMute(true); player.setOnEndOfMedia(() -> { player.play(); }); player.play(); final MediaView mediaView = new MediaView(player); view.setCenter(mediaView); return view; }

Uso una devolución de llamada y comienzo una reproducción manualmente. Esto funciona como un bucle infinito, incluso esta es la forma más "complicada" de hacerlo. Además, esto también funcionó para mí y debería considerarse la forma más "correcta":

@Override protected BorderPane createView() { final BorderPane view = new BorderPane(); final Media media = new Media(getClass().getResource("small.mp4").toString()); final MediaPlayer player = new MediaPlayer(media); player.setAutoPlay(true); player.setCycleCount(MediaPlayer.INDEFINITE); // or Integer.MAX_VALUE player.setRate(1.25); player.setMute(true); final MediaView mediaView = new MediaView(player); view.setCenter(mediaView); return view; }

Nota adicional:

  • small.mp4 ambos códigos con el video de Oracle que small.mp4 y el small.mp4 dado desde la página de Techslide
  • Si te ayuda, puedo publicar un código completo sin marco donde puedes colocarlo en tu video para ver si funciona.

He creado un JavaFX Media Player básico. En mi sistema operativo Windows 10, todo funciona bien y funciona exactamente como se supone.

private MediaPlayer initializeMediaPlayer(){ Media media = new Media(getClass().getResource("1-1.mp4").toString()); MediaPlayer mediaPlayer = new MediaPlayer(media); mediaPlayer.setAutoPlay(true); mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE); mediaPlayer.setRate(1.25); mediaPlayer.setMute(true); return mediaPlayer; }

Sin embargo, cuando ejecuto este código en Windows 7, el video no se reproduce en bucle: se reproduce durante cinco segundos y al final del video, el video se congela. Dado que el video dura solo 5 segundos, el bucle es absolutamente esencial para que este programa funcione correctamente.

Esto es lo que sé sobre este problema:

  • El problema SOLO persiste para los archivos mp4 en Windows 7. Cuando se ejecutó el programa con el archivo .flv de ejemplo de oracle (es decir, http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv ), funcionó bien. Convertir mis archivos mp4 a flv no es una opción.
  • El programa funciona bien en todas las computadoras con Windows 10 en las que lo he ejecutado. Este problema solo ocurre en Windows 7, pero no lo he probado en ningún otro sistema operativo. Necesito ejecutar este programa en un laboratorio solo con computadoras con Windows 7.
  • Todos los demás parámetros de MediaPlayer (es decir, set autoplay, setMute y setRate) funcionan bien tanto en Windows 10 como en Windows 7. Es solo el atributo setCycleCount que no parece funcionar en Windows 7.
  • En todas las computadoras de prueba, me aseguré de que Java fuera actualizado a la versión más reciente. Estoy usando Java 8 update 144.

El JavaFX MediaPlayer no es tan bueno, recomendaría usar una biblioteca externa como LWJGL para los sonidos. Eso funciona muy bien en todos los sistemas operativos.

Descargue aquí: https://www.lwjgl.org/