Reproduzca medios usando la biblioteca VLCj

Antecedentes


(puede omitir inmediatamente y pasar al siguiente elemento)

Al aprender Java, inmediatamente después de dominar Swing, se volvió interesante, "¿Pero cómo reproducir audio o video?". Estuve hurgando en Google por mucho tiempo, busqué varias bibliotecas allí que, en teoría, deberían darme exactamente lo que quiero. Pero como ha demostrado la práctica, la mayoría de estas bibliotecas leen una cantidad muy pequeña de formatos y no son muy convenientes de usar. Aún hurgando durante un par de días, finalmente encontré algo que en teoría se suponía que me ayudaría con la solución del problema. La biblioteca VLCj toma códecs del reproductor multimedia VLC y reproduce archivos con ellos. Otro día de sufrimiento con un tutorial en el sitio web oficial y finalmente logró comenzar a reproducir el archivo de video en JFrame.

Empecemos a trabajar:


1. Descargue la biblioteca en sí (es mejor tomar la última versión, ya que tiene problemas de compatibilidad) enlace

2. Si aún no ha instalado el reproductor multimedia VLC, deberá descargarlo e instalarlo. Puede descargarlo en el sitio web oficial de VideoLan (es mejor tomar la última versión, contiene más códecs).

3. IDE, yo uso Eclipse.

Primero, cree un nuevo proyecto y asígnele un nombre, por ejemplo, "MediaPlayer".

Ahora abra la carpeta MediaPlayer en su espacio de trabajo eclipse y descomprima el archivo descargado con la biblioteca en esta carpeta.

Además, en Eclipse, en la configuración de su proyecto, haga clic en "Agregar archivos JAR externos" y en la ventana que se abre, busque y seleccione el archivo vlcj-3.0.1.jar. Elígelo y solo a él .

Entonces, la biblioteca estaba conectada al proyecto. A continuación, necesitamos crear una instancia de la clase. Por ejemplo, cree Test.java (espero que este proceso no necesite ser explicado a nadie).

Tenemos una clase vacía con aproximadamente el siguiente contenido:

public class Test { public static void main(String[] args) { } } 

A continuación, necesitamos crear un JFrame en el que queremos mostrar nuestro video. También creamos un JPanel y colocamos el Canvas en él, que usamos como superficie para nuestro reproductor de video.

 public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); } } 

Entonces, la parte visual está lista. A continuación, pasamos directamente a la biblioteca y al reproductor VLC. Y en realidad crea el jugador en nuestro marco.

 NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\VideoLAN\VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); 

Aquí indicamos la ruta al reproductor VLC (más específicamente, los archivos libvlc.dll, libvlccore.dll y la carpeta de complementos). Creamos un reproductor multimedia avanzado (tiene un mayor conjunto de capacidades que solo un "reproductor multimedia"), le asignamos una superficie, indicamos la ruta al archivo de video, preparamos el archivo para reproducirlo y, de hecho, lo reproducimos.

Como resultado, su código se verá así:

 import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; import uk.co.caprica.vlcj.binding.LibVlc; import uk.co.caprica.vlcj.player.MediaPlayerFactory; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy; import uk.co.caprica.vlcj.runtime.RuntimeUtil; public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files/VideoLAN/VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); } } 

Ten en cuenta que:
- Su ruta al reproductor multimedia VLC puede diferir.
- La ruta a su video puede variar.

Para su comodidad, puede copiar los archivos necesarios desde el reproductor multimedia VLC a su proyecto. Esto también elimina la necesidad de instalar VLC en las computadoras donde funcionará su programa.

Al principio, tuve dificultades para reproducir archivos que tienen cirílico en el nombre o la ruta. Si experimenta las mismas dificultades, haga clic con el botón derecho en su instancia de clase, vaya a su configuración y cambie su codificación a UTF-8

Source: https://habr.com/ru/post/es434126/


All Articles