Spielen Sie Medien mit der VLCj-Bibliothek ab

Hintergrund


(Sie können sofort ĂŒberspringen und zum nĂ€chsten Element gehen)

Als ich Java lernte, unmittelbar nachdem ich Swing beherrschte, wurde es interessant: „Aber wie spielt man Audio oder Video ab?“. Ich habe lange in Google gestöbert und dort mehrere Bibliotheken ausgegraben, die mir theoretisch genau das geben sollten, was ich will. Wie die Praxis gezeigt hat, lesen die meisten dieser Bibliotheken eine sehr kleine Anzahl von Formaten und sind nicht sehr bequem zu verwenden. Ich kramte noch ein paar Tage und fand schließlich etwas, das mir theoretisch bei der Lösung des Problems helfen sollte. Die VLCj-Bibliothek nimmt Codecs vom VLC Media Player und spielt Dateien mit ihnen ab. Ein weiterer Tag des Leidens mit einem Tutorial auf der offiziellen Website und schließlich gelang es, die Videodatei in JFrame abzuspielen.

Kommen wir zur Sache:


1. Laden Sie die Bibliothek selbst herunter (es ist besser, die neueste Version zu verwenden, da KompatibilitÀtsprobleme auftreten)

2. Wenn Sie den VLC Media Player noch nicht installiert haben, mĂŒssen Sie ihn herunterladen und installieren. Sie können es auf der offiziellen VideoLan-Website herunterladen (es ist besser, die neueste Version zu verwenden, sie enthĂ€lt mehr Codecs).

3. IDE, ich benutze Eclipse.

Erstellen Sie zunÀchst ein neues Projekt und nennen Sie es beispielsweise "MediaPlayer".

Öffnen Sie nun den MediaPlayer-Ordner in Ihrem Eclipse-Arbeitsbereich und entpacken Sie das heruntergeladene Archiv mit der Bibliothek in diesen Ordner.

Klicken Sie in Eclipse in den Einstellungen Ihres Projekts auf „Externe JARs hinzufĂŒgen“ und suchen Sie im folgenden Fenster die Datei vlcj-3.0.1.jar und wĂ€hlen Sie sie aus. WĂ€hle IHN UND NUR IHN .

Die Bibliothek war also mit dem Projekt verbunden. Als nĂ€chstes mĂŒssen wir eine Instanz der Klasse erstellen. Erstellen Sie beispielsweise Test.java (ich hoffe, dieser Prozess muss niemandem erklĂ€rt werden).

Wir haben eine leere Klasse mit ungefÀhr folgendem Inhalt:

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

Als nĂ€chstes mĂŒssen wir einen JFrame erstellen, in dem wir unser Video anzeigen möchten. Wir erstellen auch ein JPanel und legen die Leinwand hinein, die wir als OberflĂ€che fĂŒr unseren Videoplayer verwenden.

 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); } } 

Der visuelle Teil ist also fertig. Als nÀchstes wenden wir uns direkt der Bibliothek und dem VLC-Player zu. Und tatsÀchlich erstellen Sie den Player selbst in unserem Rahmen.

 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(); 

Hier haben wir den Pfad zum VLC-Player angegeben (genauer gesagt die Dateien libvlc.dll, libvlccore.dll und den Plugins-Ordner). Wir haben einen erweiterten Media Player erstellt (er verfĂŒgt ĂŒber mehr Funktionen als nur einen "Media Player"), ihm eine OberflĂ€che zugewiesen, den Pfad zur Videodatei angegeben, die Datei fĂŒr die Wiedergabe vorbereitet und sie tatsĂ€chlich wiedergegeben.

Infolgedessen sieht Ihr Code ungefĂ€hr so ​​aus:

 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(); } } 

Beachten Sie Folgendes:
- Ihr Pfad zum VLC Media Player kann abweichen.
- Der Pfad zu Ihrem Video kann variieren.

Zur Vereinfachung können Sie die erforderlichen Dateien vom VLC Media Player in Ihr Projekt kopieren. Dadurch entfÀllt auch die Notwendigkeit, VLC auf Computern zu installieren, auf denen Ihr Programm funktioniert.

Zuerst hatte ich Schwierigkeiten, Dateien abzuspielen, deren Name oder Pfad Kyrillisch enthĂ€lt. Wenn Sie auf dieselben Schwierigkeiten stoßen, klicken Sie mit der rechten Maustaste auf Ihre Klasseninstanz, gehen Sie zu deren Einstellungen und Ă€ndern Sie die Codierung in UTF-8

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


All Articles