Aprende Java Aprende Php Aprende C++ Aprende HTML 5 Aprende JavaScript Aprende JSON Aprende MySQL Aprende SQLServer Aprende Visual Basic 6 Aprende PostgreSQL Aprende SQLite Aprende Redis Aprende Kotlin Aprende XML Aprende Linux VSC Aprende Wordpress Aprende Laravel Aprende VueJS Aprende JQuery Aprende Bootstrap Aprende Netbeans Aprende Android
Sigueme en Facebook Sigueme en Twitter Sigueme en Instagram Sigueme en Youtube Sigueme en TikTok Sigueme en Whatsapp
Home / Proyectos / Crea un reproductor de video con VLCJ y Java

Crea un reproductor de video con VLCJ y Java

Por jc mouse miércoles, agosto 26, 2015

VLC Media Player es un reproductor multimedia de código abierto muy popular desarrollado por el proyecto VideoLAN. VLCJ es un proyecto que permite trabajar con una instancia de VLC en java.

En este tutorial construiremos un reproductor de videos usando la librería VLCJ y librerías de VLC con el IDE Netbeans, nuestro reproductor sera capaz de abrir un archivo de video (MP4, 3GP, Dat, webm), contara con los controles básicos (PLAY, PAUSE, STOP, MUTE) se usaran slider para mostrar el avance en la reproducción del video así como modificar el punto de reproducción moviendo el slider, finalmente se podrá sacar capturas del video en cualquier punto de reproducción.

Necesitamos

  • Librería VLCJ-2.4.1.jar (descargar)
  • Librería JNA-3.5.1.jar ( www.java2s.com/Code/Jar/j/Downloadjna351jar.htm )
  • Librerías libvlc.dll y libvlccore.dll
  • IDE Netbeans 7.x o superior

Tiempo 30 minutos

Nivel: Intermedio

Paso 1: VLCJ/JNA

La librería VLCJ requiere de la librería JNA (Java Native Access), la librería JNA nos permite tener acceso  las bibliotecas compartidas nativas del sistema operativo sin usar la interfaz nativa de Java. En este tutorial, usaremos la versión de VLC 2.4.1 y JNA 3.5.1, cada versión de VLCJ requiere una versión diferente de JNA, para evitar problemas se recomienda revisar la documentación de VLCJ.

Descarga estas librerías e instala en Netbeans.

Paso 2. Archivos DLL

Necesitamos las librerías libvlc.dlllibvlccore.dll de VLC, estas por defecto se encuentran en «C:\Program Files\VideoLAN\VLC\», así que si no tienes el reproductor, debes descargar e instalar en tu pc.

Paso 3. Proyecto java

Abre netbeans y crea un nuevo proyecto que se llamara «DemoVLCJ» dale la siguiente  estructura, añade un JFrame llamado «Reproductor«, añade las librerías JNA y VLCJ

player java

Paso 4. Interfaz de usuario

Abre el jframe «Reproductor» en modo diseño y toma tu tiempo en crear la interfaz como la siguiente imagen:

interfaz de usuario

Importante: los nombres de cada control deben estar escritos como en la imagen.

 Paso 4. Codificación

Abre el jframe en modo código «Source» .

Debes agregar los siguientes import:

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.io.File;
import javax.swing.AbstractButton;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.JSlider;
import javax.swing.event.ChangeEvent;
import javax.swing.event.ChangeListener;
import javax.swing.filechooser.FileNameExtensionFilter;
import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.MediaPlayer;
import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

Se declaran las siguientes variables antes del constructor de clase:

private EmbeddedMediaPlayerComponent player;
    private File file;
    static{
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\\VideoLAN\\VLC\\");
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    }
    //bandera para controlar la reproduccion de video y el cambio en el avance de video
    private boolean band = true;

podemos observar que indicamos la ruta de los archivos DLL para que estos sean cargados en el proyecto, si tienes instalado el VLC en otra dirección, debes modificar esta variable.

en estos momentos tenemos el constructor de clase vacío, es decir:

public Reproductor() {
    initComponents();

    //codigo aqui 

}

Es en este constructor donde escribiremos todo el código necesario para hacer funcionar el reproductor

Primero declaramos algunas propiedades del proyecto y agregamos el PLAYER a un contenedor

setTitle("VLCJ Player");//nombre de reproductor
setLocationRelativeTo(null);//centrar en pantalla
player = new EmbeddedMediaPlayerComponent();
//se añade reproductor 
jPanel2.add(player);
player.setSize(jPanel2.getSize());
player.setVisible(true);
//slider control de volumen
sldVolumen.setMinimum(0);
sldVolumen.setMaximum(100);
//slider control progreso
sldProgress.setMinimum(0);
sldProgress.setMaximum(100);
sldProgress.setValue(0);
sldProgress.setEnabled(false);

Finalmente agregamos los eventos para cada control del reproductor

 //Control abrir archivo 
        btnOpenFile.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                JFileChooser fileChooser = new JFileChooser();
                FileNameExtensionFilter filter = new FileNameExtensionFilter("Videos", "mp4","flv","webm","3gp","dat");
                fileChooser.addChoosableFileFilter(filter);
                //fileChooser.setCurrentDirectory(new java.io.File("C:\\videos\\tmp\\"));
                if ( fileChooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION ){            
                    file = fileChooser.getSelectedFile();                                     
                    btnPlay.doClick();
                }
            }            
        });

        //Control captura de ventana
        btnSnapshot.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                if(file!=null){
                    String absolutePath = file.getAbsolutePath();        
                    String newPath = absolutePath .substring(0, absolutePath .length()-4) + "_" + System.currentTimeMillis() + ".png";                
                    if( player.getMediaPlayer().saveSnapshot(new File(newPath)) )               
                       JOptionPane.showMessageDialog(null, "Snapshot: " + newPath );  
                }
            }            
        });

        //Control de reproduccion
        btnPlay.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e)
            {
                if (file!=null){                    
                    player.getMediaPlayer().playMedia(file.getAbsolutePath());    
                    sldVolumen.setValue(  player.getMediaPlayer().getVolume() );
                    sldProgress.setEnabled(true);
                    setTitle( file.getName() + " - VLCJ Player");    
                }
            }
        }); 

        //Control de pausa
        btnPause.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e)
            {
               player.getMediaPlayer().setPause( player.getMediaPlayer().isPlaying()?true:false );                                   
            }
        }); 

        //Control detener reproduccion
        btnStop.addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e)
            {
              player.getMediaPlayer().stop();   
              sldProgress.setValue(0);
              sldProgress.setEnabled(false);
              setTitle("VLCJ Player");
            }
        }); 

       //Control silenciar 
       btnMute.addActionListener(new ActionListener() {            
            @Override
            public void actionPerformed(ActionEvent actionEvent) {
                AbstractButton abstractButton = (AbstractButton) actionEvent.getSource();                
                player.getMediaPlayer().mute( abstractButton.getModel().isSelected() );                
            }
        });

        //Control slider cambiar volumen
        sldVolumen.addChangeListener(new ChangeListener(){

            @Override
            public void stateChanged(ChangeEvent e) {
                Object source = e.getSource();                                
                player.getMediaPlayer().setVolume( ((JSlider) source).getValue() );
            }            
        });

        //Listener de reproductor para mostrar el progreso en la reproduccion del video 
        player.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {

            @Override
            public void positionChanged(MediaPlayer mp, float pos)
            {
                if(band){
                    int value = Math.min(100, Math.round(pos * 100.0f));            
                    sldProgress.setValue(value);                                                    
                }
            }

            @Override
            public void finished(MediaPlayer mediaPlayer){

            }

        });

        //Listener para el slider progress
        sldProgress.addMouseListener(new MouseListener(){

            @Override
            public void mouseClicked(MouseEvent e) {}

            @Override
            public void mousePressed(MouseEvent e) {
                band= false;
            }

            @Override
            public void mouseReleased(MouseEvent e) {
                band = true;
            }

            @Override
            public void mouseEntered(MouseEvent e) {}

            @Override
            public void mouseExited(MouseEvent e) {}

        });

        //Control para cambiar a posicion de reproduccion
        sldProgress.addChangeListener(new ChangeListener(){

            @Override
            public synchronized void stateChanged(ChangeEvent e) {
                if( !band ){
                    Object source = e.getSource();                                
                    float np = ((JSlider) source).getValue() / 100f;                    
                    player.getMediaPlayer().setPosition(np);    
                }

            }            
        });

Si no marca ningún error, ejecuta el reproductor y a disfrutar 🙂 caso contrario revisa que los nombres de los controles sean los mismos que los de este proyecto, revisa también que las librerias jar sean las mismas que los de este proyecto.

reproductor java

Código fuente: reproductor VLCJ (Actualizado 04/01/2026)

enjoy!!!

Tags

Artículos similares

Conexion Access con PHP

Para poder conectar PHP con una base de datos de microsoft Access debemos seguir los siguientes pasos: 1. Crea una base[...]

Localingual: Voces de todo el mundo a tu alcance

Cada día aparecen cientos sino es que miles de nuevos sitios web en el mundo, pero son muy pocos las webs verdaderamente[...]

Validación XML con Esquema XSD en PHP

En este post realizaremos un pequeño ejemplo de validación de archivos XML utilizando el esquema XSD y el lenguaje PHP ([...]

Convierte tus dibujos web en Código HTML

Sketch2Code es un proyecto de Microsoft el cual usa IA (Inteligencia Artificial) para transformar el diseño de una inter[...]

Videojuego educativo contra el Ciberbullying

¿Que es el Ciberbullying? Ciberbullying es la unión de dos palabras en inglés cyber + bullying, en español lo conocemos[...]

Efecto de explosión al abrir un JPanel

En este tutorial crearemos un interesante efecto de explosión al momento de abrir un JPanel, este efecto puede extenders[...]