Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube
JC Mouse Bolivia
Index / Java / Reproducir video en JFrame Swing con JavaFX

Reproducir video en JFrame Swing con JavaFX

Autor jc mouse domingo, junio 19, 2016

JavaFX un producto de  Sun Microsystems/Oracle Corporation que salio a la luz para competir con tecnologías como Flash Silverlight, tiene una amplia gama de herramientas y componentes que dejaron atrás los componentes de Java Swing en especial los correspondientes a Multimedia. Sin embargo al ser de la misma familia 🙂 pueden interactuar entre ellos y de esa forma aprovechar lo mejor de ambos mundos.

En este post aprovecharemos las herramientas de multimedia de JavaFX y las integraremos en un formulario swing para reproducir un video, algo que solo con java swing seria muy complicado.

Importante: JavaFX soporta los siguientes codec en audio y video

  • Audio: MP3; AIFF containing uncompressed PCM; WAV containing uncompressed PCM; MPEG-4 multimedia container with Advanced Audio Coding (AAC) audio
  • Video: FLV containing VP6 video and MP3 audio; MPEG-4 multimedia container with H.264/AVC (Advanced Video Coding) video compression

Si tienes problemas con estos codec para crear tus videos te recomiendo la siguiente página “Convert to H.264 Video” que te permite convertir videos online

Para saber más sobre los codecs en JavaFX ve al siguiente enlace “<<aquí papa>>”

Vamos al proyecto

Utilizaremos un video MP4 del Profesor Jirafales, lo puedes descargar del siguiente enlace (430kb)

https://mega.nz/#!tJ0EWC7B!51POvuUF25JqGDOBj_u-JynJHoKAKbo6phmh1S8ypNg

Paso 1: Crea un proyecto java Swing (nombre proyecto: Java Video)

Paso 2: Añade un JFrame y a este un JPanel, es decir:

multimedia java

Paso 3: Abre el JFrame en modo código

Las librerías que usaremos son las siguientes:

import java.awt.BorderLayout;
import java.io.File;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;

Copia y pega en tu clase JFrame, como puedes ver, tenemos tanto librerías swing como fx.

Declara una variable jfxPanel que es un contenedor propio de javaFX

private final JFXPanel jfxPanel = new JFXPanel();   

Ahora añadimos el panel de javaFX al panel de java Swing, en el constructor de clase, agrega el siguiente código:

//Añadimos el panel de JavaFX al JPanel Swing
jPanel1.setLayout(new BorderLayout());
jPanel1.add(jfxPanel,BorderLayout.CENTER);

A continuación creamos un método que nos permite ejecutar el componente de JavaFX dentro el Swing de java

    private void createScene(){
        Platform.runLater(new Runnable() {
             @Override
             public void run() {                 
                File file = new File("E:\\videos\\chavodel8\\profe.mp4");                                  
                    MediaPlayer oracleVid = new MediaPlayer(                                       
                        new Media(file.toURI().toString())
                    );
                    //se añade video al jfxPanel
                    jfxPanel.setScene(new Scene(new Group(new MediaView(oracleVid))));                    
                    oracleVid.setVolume(0.7);//volumen
                    oracleVid.setCycleCount(MediaPlayer.INDEFINITE);//repite video
                    oracleVid.play();//play video
             }
        });
    }

Finalmente este método createScene() lo agregamos en el constructor de clase debajo de initComponents().

Ahora todo junto:

import java.awt.BorderLayout;
import java.io.File;
import javafx.application.Platform;
import javafx.embed.swing.JFXPanel;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.media.Media;
import javafx.scene.media.MediaPlayer;
import javafx.scene.media.MediaView;
/**
 * @see http://www.jc-mouse.net/
 * @author mouse
 */
public class JFrameVideo extends javax.swing.JFrame {

    private final JFXPanel jfxPanel = new JFXPanel();    
        
    /**
     * Creates new form JFrameVideo
     */
    public JFrameVideo() {
        initComponents();
        createScene();
        
        setTitle("Java Swing Video con FX");
        setResizable(false);
        setLocationRelativeTo(null);
        //Añadimos el panel de JavaFX al JPanel Swing
        jPanel1.setLayout(new BorderLayout());
        jPanel1.add(jfxPanel,BorderLayout.CENTER);
    }

    private void createScene(){
        Platform.runLater(new Runnable() {
             @Override
             public void run() {                 
                File file = new File("E:\\videos\\chavodel8\\profe.mp4");                                  
                    MediaPlayer oracleVid = new MediaPlayer(                                       
                        new Media(file.toURI().toString())
                    );
                    //se añade video al jfxPanel
                    jfxPanel.setScene(new Scene(new Group(new MediaView(oracleVid))));                    
                    oracleVid.setVolume(0.7);//volumen
                    oracleVid.setCycleCount(MediaPlayer.INDEFINITE);//repite video
                    oracleVid.play();//play video
             }
        });
    }

ejecuta y listo

javafx mp4

 

Enjoy!!! 🙂

Tags

Si te ha gustado podrías compartirlo o dejar un comentario. ¡Muchas gracias!
Autor: JC Mouse

Yo soy yo :) JC Mouse, Soy orgullosamente boliviano soy fundador y CEO de la web jc-Mouse.net uno de las pocas web en emprendimiento y tecnología en Bolivia.

Toda la información que encuentres en este sitio es y sera completamente gratis siempre, puedes copiar, descargar y re-publicar si así lo deseas en otros blogs o sitios web, solo te pido a cambio que dejes una referencia a esta web. Esto nos ayuda a crecer y seguir aportando. Bye

Enjoy! :)

También Te Podría Interesar

Crea un componente swing para cargar fotos en miniaturas

Crea un componente swing para cargar fotos en miniaturas

En este tutorial crearemos un componente swing para java que podremos usar en cualquiera de nuestros proyectos, el compo...

Material Design: BottomNavigationView

Material Design: BottomNavigationView

BottomNavigationView es una barra de navegación que se sitúa en la parte inferior de la pantalla en los dispositivos móv...

Crear PopupMenu (Ventana Emergente)

Crear PopupMenu (Ventana Emergente)

En este tutorial crearemos una aplicación android que nos permitirá abrir un PopupMenu de donde podremos seleccionar una...

SharedPreferences: Preferencias de Usuario

SharedPreferences: Preferencias de Usuario

En este post construiremos paso a paso un SharedPreferences más conocido en español como “Preferencias de Usuario...

Truco para Instagram

Truco para Instagram

Instagram es una red social y aplicación para subir fotos y videos. Sus usuarios también pueden aplicar efectos fotográf...

JSCRUM .:. Gestor de Proyectos

JSCRUM .:. Gestor de Proyectos

¿Qué es SCRUM? SCRUM es un modelo de referencia que define un conjunto de prácticas y roles, y que puede tomarse como pu...

2 comentarios en “Reproducir video en JFrame Swing con JavaFX”

  1. JOSE DUITAMA dice:

    HOLA QUE BUEN TUTORIAL ENLACE ESTE VIDEO CON MI ARDUINO PERO TENGO UNA DUDA COMO PUEDO AGRANDAR EL VIDEO

  2. yoel cesar dice:

    muy buen tutorial felicitaciones sige adelante.

Los comentarios estan cerrados

Comparte lo que sabes

Categorias

Últimas entradas

En este y un segundo post desarrollaremos un microservicio java utilizando el framework Spark que implementara las funci...

Oi galera, en esta oportunidad les traigo una curiosidad que encontré por casualidad perdiendo el tiempo en Internet, se...

Kotlin es un lenguaje de programación relativamente nuevo que ha ido ganando terreno en el desarrollo de aplicaciones pa...

Kotlin es un lenguaje de programación de tipado estático que corre sobre la máquina virtual de Java y que también puede...

Android Bolivia

MAUS