martes, 21 de junio de 2011

Componente para reproducir vídeos en JavaFX 2

Continuando con el nuevo JavaFX, he empezado a trabajar con la reproducción de contenido multimedia.

Lo primero que hay que resaltar, es que esta nueva versión de JavaFX, al menos por el momento, viene muy limitada al permitir sólo la reproducción de vídeo en formato FLV (que contenga vídeo en formato VP6 y audio en formato MP3).

Tal como se describe en la página de JavaFX, las clases implicadas en la reproducción de vídeos son:

Media - contiene información sobre el recurso, como su fuente, resolución y metadatos.
MediaPlayer - proporciona los controles para la reproducción (arranque, pausa, volumen...)
MediaView - extiende de nodo, y aporta la posibilidad de añadir animaciones, efectos...

Así que podemos reproducir un vídeo FLV con el siguiente código.

media = new Media(mediaPath);
   player = new MediaPlayer(media);
   view = new MediaView(player);
  getChildren().add(vbox);
   player.play();
Partiendo de esta base, he creado un pequeño componente que implementa un reproductor de vídeo sencillo, con posibilidad de pausar, avanzar, retroceder, ir a una posición concreta, y de cambiar el volumen. La clase extiende de javafx.scene.layout.Region, de forma que puede añadirse directamente al layout de una aplicación. Por ejemplo:

public void start(Stage primaryStage) {
     Group root = new Group();
        
     border = new BorderPane();
     border.setCenter(new VideoPlayer(videoPath);
        
     root.getChildren().add(border);
     Scene scene = new Scene(root, 800, 600);
           
     primaryStage.setScene(scene);
     primaryStage.setVisible(true);
  }
A la hora de indicar la ruta del vídeo que se quiere reproducir es importante tener en cuenta que no se admiten espacios; en su lugar tenemos que poner %20. Por ejemplo: 

C:/Documents%20and%20Settings/user/Mis%20documentos/1.flv

Aquí se puede descargar el VideoPlayer.

1 comentario:

Cualquier aportación será bienvenida