vlcj - Kurzanleitung
Das vlcj ist ein Open Source-Projekt, mit dessen Hilfe der VLC-Player in einer Java-basierten Anwendung ausgeführt werden kann. Es bietet die Möglichkeit, den im System installierten VLC-Player zu ermitteln und zu binden, um mithilfe von Java eine Media Player-Client- und -Server-Software zu erstellen.
Mit Java können Sie einfach lokale Mediendateien abspielen und sogar einen Video-on-Demand-Streaming-Server erstellen.
Verwendung
vlcj ist eine sehr beliebte Java-basierte Bibliothek und wird in verschiedenen Java-basierten Softwareprogrammen wie ozeanografischen Forschungsschiffen und maßgeschneiderten IPTV- und Heimkino-Lösungen verwendet. Einige der bekanntesten Beispiele sind Open Source-Videokameras bei Elphel und Video-Mapping für das Open Street Map-Projekt.
Syntax
Erstellen Sie eine EmbeddedMediaPlayerComponent-Komponente
EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
Video abspielen
Das Abspielen eines Videos ist sehr einfach. Übergeben Sie den Pfad der Datei und das Video wird abgespielt.
//pass path to media file
mediaPlayerComponent.mediaPlayer().media().play(path);
VLC-Player
VLC Media Player ist ein sehr beliebter Media Player und für Linux, MacOS und Windows verfügbar. Es wird mit Tonnen von Codecs geliefert, mit denen alle Arten von Medien abgespielt werden können, ohne dass ein externer Mediencodec installiert werden muss. Es unterstützt auch Video-Streaming über Netzwerke und ermöglicht das Transcodieren von Medien. Mit dem VLC Media Player können wir lokale Mediendateien, lokale Netzwerk-Streams, internetbasierte Video-Streams, DVD, Bluray, Webcam, digitales Video und vieles mehr abspielen.
VLC Media Player wird in nativen Plattformcode kompiliert und kann von Java-Programmen nicht direkt verwendet werden. Um dieses Problem zu beheben, bietet VLC Media Player eine native API (Application Programming Interface) namens LibVLC und ist Teil von VLC Media Player. vlcj stellt dann die Java-Ebene bereit, die für die Interaktion mit VLC Media Player mithilfe von LibVLC erforderlich ist.
vlcj Funktionen
vlcj ist eine reife Bibliothek. Es bietet die folgenden Funktionen, die für die Arbeit mit dem VLC Media Player unerlässlich sind.
Java Bindings - vlcj bietet Java-Bindung für alle nativen Vorgänge von VLC Media Player, sodass wir eine Media Player-Funktionalität mithilfe der Java-Programmierung programmieren können.
Framework - vlcj fungiert als Framework, das jedes plattformspezifische Verhalten und die Verarbeitung von nativem Code kapselt, indem es eine einfache Programmierschnittstelle auf hoher Ebene für LibVLC bereitstellt.
Robust- vlcj stellt die korrekte Verwendung der LibVLC-APIs sicher. Eine falsche Verwendung kann zu Abstürzen oder Deadlocks führen.
Handles Asynchronous native events- vlcj registriert Rückrufe für asynchrone native Ereignisse, die dann einfach im Java-Listener-Muster verarbeitet werden können. Dieses Programmiermodell hilft bei der Verhinderung von Deadlocks.
vlcj-Anwendungen
Es folgen einige Beispiele, in denen vlcj verwendet werden kann.
Java Based - Da wir auf Java basieren, können wir Media Player in Swing-, Awt-, SWT-, Javafx- und OpenGL-Programmen erstellen.
IDE - Eclipse / NetBeans-basierte Rich Client Platform-Anwendungen können vlcj für medienbasierte Anwendungen verwenden.
Internet Radio Player - Mit vlcj können wir einen Audio-Player erstellen, der internetbasierte Radios streamen kann.
YouTube Player - Mit vlcj können wir einen YouTube-Player erstellen, der YouTube-Videos streamen kann.
Transcoder - Mit vlcj können wir alle Videos transkodieren.
Network streaming server - Mit vlcj können wir einen Video-on-Demand-Server erstellen.
Network streaming client - Mit vlcj können wir einen Video-on-Demand-Client erstellen.
Video Playing Applet - Mit vlcj können wir ein Applet erstellen, mit dem ein Video abgespielt werden kann.
WebCam - Mit vlcj können wir eine Webcam-Anwendung erstellen.
CCTV Camera - Mit vlcj können wir eine CCTV-Kameraanwendung erstellen, die von CCTV-Kameras aufgenommene Videos wiedergibt.
Lizenz
vlcj kann unter GPL- Lizenzbedingungen vertrieben werden. Bei kommerzieller Nutzung ohne Bedingungen der GPL-Lizenz wenden Sie sich an das Team von Caprica Software Limited .
vlcj ist eine Java-basierte Bibliothek. Die allererste Voraussetzung ist daher, dass JDK auf Ihrem Computer installiert ist.
Schritt 1 - Java Development Kit (JDK) einrichten
Sie können die neueste Version des SDK von der Java-Site von Oracle herunterladen - Java SE Downloads. Anweisungen zum Installieren von JDK finden Sie in heruntergeladenen Dateien. Befolgen Sie die Anweisungen zum Installieren und Konfigurieren des Setups. Stellen Sie schließlich die Umgebungsvariablen PATH und JAVA_HOME so ein, dass sie auf das Verzeichnis verweisen, das Java und Javac enthält, normalerweise java_install_dir / bin bzw. java_install_dir.
Wenn Sie Windows ausführen und das JDK in C: \ jdk1.6.0_15 installiert haben, müssen Sie die folgende Zeile in Ihre Datei C: \ autoexec.bat einfügen.
set PATH=C:\jdk1.6.0_15\bin;%PATH%
set JAVA_HOME=C:\jdk1.6.0_15
Alternativ müssen Sie unter Windows NT / 2000 / XP mit der rechten Maustaste auf Arbeitsplatz klicken und Eigenschaften → Erweitert → Umgebungsvariablen auswählen. Anschließend müssen Sie den PATH-Wert aktualisieren und auf die Schaltfläche OK klicken.
Wenn unter Unix (Solaris, Linux usw.) das SDK in /usr/local/jdk1.6.0_15 installiert ist und Sie die C-Shell verwenden, müssen Sie Folgendes in Ihre .cshrc-Datei einfügen.
setenv PATH /usr/local/jdk1.6.0_15/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.6.0_15
Wenn Sie alternativ eine integrierte Entwicklungsumgebung (IDE) wie Borland JBuilder, Eclipse, IntelliJ IDEA oder Sun ONE Studio verwenden, müssen Sie ein einfaches Programm kompilieren und ausführen, um zu bestätigen, dass die IDE weiß, wo Sie Java installiert haben. Andernfalls müssen Sie eine ordnungsgemäße Einrichtung durchführen, wie im Dokument der IDE angegeben.
Schritt 2 - Installieren Sie die vlcj-Bibliothek zusammen mit den Abhängigkeiten
Laden Sie die folgenden Gläser von MVNRepository herunter und verwenden Sie sie in Ihrem Klassenpfad.
- vlc-4.4.4.jar
- vlc-natives-4.1.0.jar
- jna-5.2.0.jar
- jna-platform-5.2.0.jar
Stellen Sie sicher, dass Sie Ihre CLASSPATH-Variable in diesem Verzeichnis richtig eingestellt haben, da sonst beim Ausführen Ihrer Anwendung ein Problem auftritt.
Schritt 3 - Eclipse IDE einrichten
Alle Beispiele in diesem Tutorial wurden mit Eclipse IDE geschrieben. Wir empfehlen Ihnen daher, die neueste Version von Eclipse auf Ihrem Computer zu installieren.
Laden Sie zum Installieren der Eclipse-IDE die neuesten Eclipse-Binärdateien von herunter https://www.eclipse.org/downloads/. Wenn Sie die Installation heruntergeladen haben, entpacken Sie die Binärdistribution an einem geeigneten Ort. Zum Beispiel in C: \ eclipse unter Windows oder / usr / local / eclipse unter Linux / Unix und setzen Sie schließlich die Variable PATH entsprechend.
Eclipse kann durch Ausführen der folgenden Befehle auf einem Windows-Computer gestartet werden, oder Sie können einfach auf eclipse.exe doppelklicken
%C:\eclipse\eclipse.exe
Eclipse kann durch Ausführen der folgenden Befehle auf einem Unix-Computer (Solaris, Linux usw.) gestartet werden:
$/usr/local/eclipse/eclipse
Schritt 4 - Erstellen Sie ein Maven-Projekt
C:\MVN>mvn archetype:generate
-DgroupId = com.tutorialspoint.media
-DartifactId = mediaPlayer
-DarchetypeArtifactId = maven-archetype-quickstart
-DinteractiveMode = false
Es wird ein Maven-Projekt erstellt. Aktualisieren Sie nun die Datei pom.xml wie folgt:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.tutorialspoint.media</groupId>
<artifactId>mediaPlayer</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>mediaPlayer</name>
<url>http://maven.apache.org</url>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>uk.co.caprica</groupId>
<artifactId>vlcj</artifactId>
<version>4.4.4</version>
</dependency>
</dependencies>
</project>
Führen Sie den folgenden Befehl aus, um Maven-Abhängigkeiten zu aktualisieren und ein Projekt zu erstellen.
mvn package
Sobald der Befehl erfolgreich ist. Importieren Sie das Maven-basierte Mediaplayer-Projekt in Eclipse als Maven-Projekt. Rest Eclipse wird behandeln.
Schritt 5 - Installieren Sie den VLC Player
Laden Sie die neueste Version von VLC Player von der Startseite des VLC Media Players herunter und installieren Sie sie mit dem Installationsprogramm. Die Bibliothek vlcj 4.4 benötigt VLC 3.0 und Java 8 als Voraussetzungen.
VLC Player Discovery
Die vlcj-Bibliothek bietet eine Klasse, die die automatische Erkennung des im System installierten VLC-Players mithilfe der folgenden Syntax ausführt.
EmbeddedMediaPlayerComponent mediaPlayerComponent = = new EmbeddedMediaPlayerComponent();
Video laden
Mit Medien können wir jetzt ganz einfach ein Video in unsere Anwendung laden, indem wir die folgende Syntax verwenden:
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
Video abspielen
Mit Steuerelementen können wir jetzt problemlos ein Video in unserer Anwendung mit der folgenden Syntax abspielen
mediaPlayerComponent.mediaPlayer().controls().play();
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Klicken Sie auf die Wiedergabetaste und das Video wird abgespielt.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj Play Video mit der Funktion zum Anhalten von Videos aktualisieren .
Video anhalten
Mit Steuerelementen können wir jetzt ein Video in unserer Anwendung mithilfe der folgenden Syntax einfach anhalten
mediaPlayerComponent.mediaPlayer().controls().pause();
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Klicken Sie auf die Wiedergabetaste und das Video wird abgespielt. Klicken Sie dann auf die Pause-Taste. Jetzt wird das Video angehalten.
Beispiel
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Jetzt können Sie ein Video abspielen, anhalten und zurückspulen.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj Pause Video mit der Funktion " Video suchen" aktualisieren .
Video suchen
Mit Steuerelementen können wir jetzt ein Video in unserer Anwendung mithilfe der folgenden Syntax einfach zurückspulen:
mediaPlayerComponent.mediaPlayer().controls().skipWhile(10000);
Hier übergeben wir einen positiven Wert (die Länge zum Weiterleiten), um das Video zurückzuspulen.
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
skipButton = new JButton("Skip");
controlsPane.add(skipButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Jetzt können Sie ein Video abspielen, anhalten, zurückspulen und überspringen.
Lassen Sie uns die Anwendung, in der wir das Kapitel vlcj Seek Video aktualisieren, um die Funktion zum Spielen von Ereignissen erweitern.
Umgang mit dem Spielereignis
Fügen Sie den Handler für spielende Ereignisse mit der folgenden Syntax hinzu (Vorlagenmethode) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void playing(MediaPlayer mediaPlayer) {
}
};
Oder wir können den Handler für spielende Ereignisse mithilfe der folgenden Syntax hinzufügen (Listener-Methode):
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void playing(MediaPlayer mediaPlayer) {
}
});
Wenn ein Video abgespielt wird, wird das Wiedergabeereignis ausgelöst.
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
};
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
skipButton = new JButton("Skip");
controlsPane.add(skipButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Jetzt können Sie im Konsolenprotokoll sehen, dass beim Laden des Videos eine Meldung wie folgt angezeigt wird:
Media Playback started.
Klicken Sie nun auf verschiedene Schaltflächen. Sobald Sie auf die Wiedergabetaste klicken, wird die obige Meldung in der Konsole angezeigt.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Videoereignis abspielen mit der Handhabung der Funktion für abgeschlossene Ereignisse aktualisieren .
Behandlung des abgeschlossenen Ereignisses
Fügen Sie den fertigen Ereignishandler mit der folgenden Syntax hinzu (Vorlagenmethode) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void finished(MediaPlayer mediaPlayer) {
}
};
Oder wir können den fertigen Ereignishandler mit der folgenden Syntax hinzufügen (Listener-Methode):
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
}
});
Wenn ein Video vollständig abgespielt wird, wird das fertige Ereignis ausgelöst.
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
};
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
skipButton = new JButton("Skip");
controlsPane.add(skipButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Jetzt spielen Sie das Video ab und warten, bis es fertig ist. Dann wird die folgende Meldung angezeigt
Media Playback finished.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Fertiges Videoereignis mit Fehlerbehandlungsfunktionen aktualisieren .
Fehlerereignis behandeln
Fügen Sie einen Fehlerereignishandler mit der folgenden Syntax hinzu (Vorlagenmethode) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void error(MediaPlayer mediaPlayer) {
}
};
Oder wir können einen Fehlerereignishandler mit der folgenden Syntax hinzufügen (Listener-Methode):
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void error(MediaPlayer mediaPlayer) {
}
});
Wenn ein Video nicht geladen werden kann, wird ein Fehlerereignis ausgelöst. Da die Wiedergabemethode jedoch sofort zurückkehrt, wird später ein Fehlerereignis ausgelöst (falls das Video geladen ist und nicht ausgeführt werden kann). Wir müssen also Fehlerereignisse asynchron behandeln.
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
skipButton = new JButton("Skip");
controlsPane.add(skipButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Hier wird ein ungültiger Pfad zur Mediendatei angegeben. Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Jetzt wird eine Meldung in der Konsole wie folgt angezeigt:
Failed to load Media.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Fehler beim Laden des Videoereignisses mit der Funktion zur Behandlung von Mausereignissen aktualisieren .
Umgang mit Mausereignissen
Fügen Sie Mausereignishandler mit der folgenden Syntax hinzu (Vorlagenmethode) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
}
};
Oder wir können einen Maus-Ereignishandler mit der folgenden Syntax hinzufügen (Listener-Methode):
Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();
videoSurface.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
videoSurface.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
}
});
Bei der Listener-Methode unter Windows müssen wir die Verarbeitung nativer Mauseingaben mithilfe der folgenden Syntax deaktivieren.
mediaPlayerComponent.mediaPlayer().input().enableMouseInputHandling(false);
Wenn wir die Maus in einer Videooberfläche verwenden, wird das Mausereignis ausgelöst.
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
skipButton = new JButton("Skip");
controlsPane.add(skipButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Klicken Sie nun in das Video und Sie sehen eine Meldung in der Konsole wie folgt:
Media Playback started.
Media Playback started.
Mouse Clicked. (377,180)
Mouse Clicked. (377,180)
Mouse Clicked. (356,120)
Media Playback finished.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Handling Mouse Event mit der Funktion zur Behandlung von Tastaturereignissen aktualisieren .
Behandeln von Tastaturereignissen
Fügen Sie Mausereignishandler mit der folgenden Syntax hinzu (Vorlagenmethode) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void keyPressed(KeyEvent e) {
}
};
Oder wir können einen Tastaturereignishandler mit der folgenden Syntax hinzufügen (Listener-Methode):
Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();
videoSurface.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
}
});
Bei der Listener-Methode unter Windows müssen wir die native Tastatureingabe mit der folgenden Syntax deaktivieren.
mediaPlayerComponent.mediaPlayer().input().enableKeyInputHandling(false);
Wenn wir eine beliebige Taste drücken, wird das Tastaturereignis ausgelöst.
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
JPanel controlsPane = new JPanel();
playButton = new JButton("Play");
controlsPane.add(playButton);
pauseButton = new JButton("Pause");
controlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
controlsPane.add(rewindButton);
skipButton = new JButton("Skip");
controlsPane.add(skipButton);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Drücken Sie nun eine beliebige Taste und Sie sehen Meldungen in der Konsole wie folgt:
Media Playback started.
Media Playback started.
Mouse Clicked. (345,231)
Key pressed. 82
Media Playback finished.
Key pressed. 82
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Behandeln von Tastaturereignissen mit Audiowiedergabefunktion aktualisieren . Ähnlich wie bei der Videowiedergabe können wir auch die Audiowiedergabe auf einfache Weise steuern.
Erstellen Sie einen Audio-Player
AudioPlayerComponent audioPlayerComponent = new AudioPlayerComponent();
Audio laden
Mit Medien können wir jetzt einfach ein Audio in unsere Anwendung laden, indem wir die folgende Syntax verwenden:
audioPlayerComponent.mediaPlayer().media().startPaused(path);
Audio abspielen
Mit Steuerelementen können wir jetzt einfach einen Audioclip in unserer Anwendung mit der folgenden Syntax abspielen:
audioPlayerComponent.mediaPlayer().controls().play();
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Drücken Sie nun die Wiedergabetaste in Audio Controls und ein Clip wird abgespielt. Durch Klicken auf die Schaltfläche Pause wird das Audio angehalten.
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Audio Player mit Marquee-Unterstützung aktualisieren . Wir können einen Text als Überlagerung über das Video hinzufügen.
Erstellen und bauen Sie ein Festzelt
Marquee marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
Festzelt einstellen
Mit der Laufschriftmethode können wir jetzt in unserer Anwendung ganz einfach einen Auswahlrahmen für unser Video festlegen, indem wir die folgende Syntax verwenden:
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import uk.co.caprica.vlcj.player.base.Marquee;
import uk.co.caprica.vlcj.player.base.MarqueePosition;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private final Marquee marquee;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Marquee mit Logo-Unterstützung aktualisieren . Wir können einen Text als Überlagerung über das Video hinzufügen.
Erstellen und erstellen Sie ein Logo
Logo logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
Logo einstellen
Mit der Logo-Methode können wir jetzt in unserer Anwendung mithilfe der folgenden Syntax ganz einfach ein Logo für unser Video festlegen
mediaPlayerComponent.mediaPlayer().logo().set(logo);
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import uk.co.caprica.vlcj.player.base.Logo;
import uk.co.caprica.vlcj.player.base.LogoPosition;
import uk.co.caprica.vlcj.player.base.Marquee;
import uk.co.caprica.vlcj.player.base.MarqueePosition;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private static final String LOGO_PATH = "D:\\Downloads\\logo.png";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private final Marquee marquee;
private final Logo logo;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
mediaPlayerComponent.mediaPlayer().logo().set(logo);
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Logo mit Unterstützung für Medieninformationen aktualisieren .
Analysieren Sie Medien mit mediaPlayer
mediaPlayerComponent.mediaPlayer().media().parsing().parse();
Parsing-Ereignis behandeln
mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
@Override
public void mediaParsedChanged(Media media, MediaParsedStatus newStatus) {
}
}
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import uk.co.caprica.vlcj.media.Media;
import uk.co.caprica.vlcj.media.MediaEventAdapter;
import uk.co.caprica.vlcj.media.MediaParsedStatus;
import uk.co.caprica.vlcj.media.TrackInfo;
import uk.co.caprica.vlcj.player.base.ChapterDescription;
import uk.co.caprica.vlcj.player.base.Logo;
import uk.co.caprica.vlcj.player.base.LogoPosition;
import uk.co.caprica.vlcj.player.base.Marquee;
import uk.co.caprica.vlcj.player.base.MarqueePosition;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.base.TitleDescription;
import uk.co.caprica.vlcj.player.base.TrackDescription;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private static final String LOGO_PATH = "D:\\Downloads\\logo.png";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private final Marquee marquee;
private final Logo logo;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
mediaPlayerComponent.mediaPlayer().logo().set(logo);
mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
@Override
public void mediaParsedChanged(Media media,
MediaParsedStatus newStatus) {
if(newStatus == MediaParsedStatus.DONE) {
MediaPlayer mediaPlayer = mediaPlayerComponent.mediaPlayer();
List<TrackDescription> videoTracks = mediaPlayer.video().trackDescriptions();
System.out.println(videoTracks.get(1));
List<TitleDescription> titles = mediaPlayer.titles().titleDescriptions();
if(!titles.isEmpty()) {
System.out.println(titles.get(0));
}
List<ChapterDescription> chapters = mediaPlayer.chapters().descriptions();
if(!chapters.isEmpty()) {
System.out.println(chapters.get(0));
}
List<? extends TrackInfo> trackInfo = mediaPlayer.media().info().tracks();
if(!trackInfo.isEmpty()) {
System.out.println(trackInfo.get(0));
}
}
}
});
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
mediaPlayerComponent.mediaPlayer().media().parsing().parse();
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Und es werden Nachrichten wie folgt angezeigt -
TrackDescription[id=0,description=Track 1]
VideoTrackInfo[codec=0x34363268,codecName=h264,originalCodec=0x31637661,
originalCodecName=avc1,id=0,profile=-1,level=-1,bitRate=0,language=null,
description=null,codecDescription=H264 - MPEG-4 AVC (part 10)]
[width=596,height=336,sampleAspectRatio=1,sampleAspectRatioBase=1,
frameRate=30000,frameRateBase=1001,orientation=TOP_LEFT,projection=RECTANGULAR,
yaw=0.0,pitch=0.0,roll=0.0,fov=80.0,multiview=null]
Media Playback started.
TrackDescription[id=0,description=Track 1]
VideoTrackInfo[codec=0x34363268,codecName=h264,originalCodec=0x31637661,
originalCodecName=avc1,id=0,profile=-1,level=-1,bitRate=0,language=null,
description=null,codecDescription=H264 - MPEG-4 AVC (part 10)]
[width=596,height=336,sampleAspectRatio=1,sampleAspectRatioBase=1,
frameRate=30000,frameRateBase=1001,orientation=TOP_LEFT,projection=RECTANGULAR,
yaw=0.0,pitch=0.0,roll=0.0,fov=80.0,multiview=null]
Lassen Sie uns die Anwendung weiter verbessern, in der wir das Kapitel vlcj - Medieninformationen mit Unterstützung für die Vollbildwiedergabe aktualisieren .
Fügen Sie eine Vollbildstrategie hinzu
Wir verwenden AdaptiveFullScreenStrategy, das intern XFullScreenStrategy, eine native Vollbildstrategie für Linux, und Win32FullScreenStrategy, eine native Vollbildstrategie für Windows, verwendet.
mediaPlayerComponent.mediaPlayer().fullScreen().strategy(
new AdaptiveFullScreenStrategy(this));
Vollbildmodus umschalten
Der folgende Code schaltet den Vollbildmodus um.
mediaPlayerComponent.mediaPlayer().fullScreen().toggle();
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import uk.co.caprica.vlcj.media.Media;
import uk.co.caprica.vlcj.media.MediaEventAdapter;
import uk.co.caprica.vlcj.media.MediaParsedStatus;
import uk.co.caprica.vlcj.media.TrackInfo;
import uk.co.caprica.vlcj.player.base.ChapterDescription;
import uk.co.caprica.vlcj.player.base.Logo;
import uk.co.caprica.vlcj.player.base.LogoPosition;
import uk.co.caprica.vlcj.player.base.Marquee;
import uk.co.caprica.vlcj.player.base.MarqueePosition;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.base.TitleDescription;
import uk.co.caprica.vlcj.player.base.TrackDescription;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.embedded.fullscreen.adaptive.AdaptiveFullScreenStrategy;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private static final String LOGO_PATH = "D:\\Downloads\\logo.png";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private final Marquee marquee;
private final Logo logo;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
private JToggleButton toggleButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
mediaPlayerComponent.mediaPlayer().logo().set(logo);
mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
@Override
public void mediaParsedChanged(Media media,
MediaParsedStatus newStatus) {
if(newStatus == MediaParsedStatus.DONE) {
MediaPlayer mediaPlayer = mediaPlayerComponent.mediaPlayer();
List<TrackDescription> videoTracks = mediaPlayer.video().trackDescriptions();
System.out.println(videoTracks.get(1));
List<TitleDescription> titles = mediaPlayer.titles().titleDescriptions();
if(!titles.isEmpty()) {
System.out.println(titles.get(0));
}
List<ChapterDescription> chapters = mediaPlayer.chapters().descriptions();
if(!chapters.isEmpty()) {
System.out.println(chapters.get(0));
}
List<? extends TrackInfo> trackInfo = mediaPlayer.media().info().tracks();
if(!trackInfo.isEmpty()) {
System.out.println(trackInfo.get(0));
}
}
}
});
mediaPlayerComponent.mediaPlayer().fullScreen().strategy(new AdaptiveFullScreenStrategy(this));
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
//Create others border
Border othersBorder = BorderFactory.createTitledBorder("Others");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel othersPane = new JPanel();
othersPane.setBorder(othersBorder);
toggleButton = new JToggleButton("Toggle Full Screen");
othersPane.add(toggleButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
controlsPane.add(othersPane);
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
toggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().fullScreen().toggle();
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
mediaPlayerComponent.mediaPlayer().media().parsing().parse();
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Klicken Sie nun auf die Schaltfläche Vollbild und sehen Sie das Video im Vollbildmodus.
Lassen Sie uns die Anwendung, in der wir das Kapitel vlcj - Vollbildvideo aktualisieren, mit einer Audio-Equalizer-Unterstützung weiter verbessern .
Erstellen Sie einen Audio-Equalizer
Mit der MediaPlayerFactory-Instanz können wir einen Equalizer mit allen Werten als Nullen erstellen.
Equalizer equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer();
Holen Sie sich voreingestellte Equalizer-Werte
Im folgenden Code erhalten Sie die voreingestellten Equalizer-Namen, z. B. Flat, Classical, Club, Dance, Headphones usw.
List<String> presetNames = factory.equalizer().presets();
Verwenden Sie den voreingestellten Equalizer.
Equalizer equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer(presetName);
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import uk.co.caprica.vlcj.media.Media;
import uk.co.caprica.vlcj.media.MediaEventAdapter;
import uk.co.caprica.vlcj.media.MediaParsedStatus;
import uk.co.caprica.vlcj.media.TrackInfo;
import uk.co.caprica.vlcj.player.base.ChapterDescription;
import uk.co.caprica.vlcj.player.base.Equalizer;
import uk.co.caprica.vlcj.player.base.Logo;
import uk.co.caprica.vlcj.player.base.LogoPosition;
import uk.co.caprica.vlcj.player.base.Marquee;
import uk.co.caprica.vlcj.player.base.MarqueePosition;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.base.TitleDescription;
import uk.co.caprica.vlcj.player.base.TrackDescription;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.embedded.fullscreen.adaptive.AdaptiveFullScreenStrategy;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private static final String LOGO_PATH = "D:\\Downloads\\logo.png";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private final Marquee marquee;
private final Logo logo;
private final Equalizer equalizer;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
private JToggleButton toggleButton;
private JButton equalizerButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
mediaPlayerComponent.mediaPlayer().logo().set(logo);
mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
@Override
public void mediaParsedChanged(Media media,
MediaParsedStatus newStatus) {
if(newStatus == MediaParsedStatus.DONE) {
MediaPlayer mediaPlayer = mediaPlayerComponent.mediaPlayer();
List<TrackDescription> videoTracks = mediaPlayer.video().trackDescriptions();
System.out.println(videoTracks.get(1));
List<TitleDescription> titles = mediaPlayer.titles().titleDescriptions();
if(!titles.isEmpty()) {
System.out.println(titles.get(0));
}
List<ChapterDescription> chapters = mediaPlayer.chapters().descriptions();
if(!chapters.isEmpty()) {
System.out.println(chapters.get(0));
}
List<? extends TrackInfo> trackInfo = mediaPlayer.media().info().tracks();
if(!trackInfo.isEmpty()) {
System.out.println(trackInfo.get(0));
}
}
}
});
mediaPlayerComponent.mediaPlayer().fullScreen().strategy(new AdaptiveFullScreenStrategy(this));
List<String> presetNames = mediaPlayerComponent.mediaPlayerFactory().equalizer().presets();
System.out.println(presetNames);
equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer("Dance");
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
//Create others border
Border othersBorder = BorderFactory.createTitledBorder("Others");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel othersPane = new JPanel();
othersPane.setBorder(othersBorder);
toggleButton = new JToggleButton("Toggle Full Screen");
equalizerButton = new JButton("Equalizer");
othersPane.add(toggleButton);
othersPane.add(equalizerButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
controlsPane.add(othersPane);
controlsPane.setPreferredSize(new Dimension(400, 120));
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
toggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().fullScreen().toggle();
}
});
equalizerButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().audio().setEqualizer(equalizer);
System.out.println("Using equalizer: " + equalizer);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
mediaPlayerComponent.mediaPlayer().media().parsing().parse();
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Klicken Sie nun auf die Equalizer-Schaltfläche und sehen Sie die Equalizer-Details in der Konsole wie folgt.
[Flat, Classical, Club, Dance, Full bass, Full bass and treble,
Full treble, Headphones, Large Hall, Live, Party, Pop, Reggae,
Rock, Ska, Soft, Soft rock, Techno]
TrackDescription[id=0,description=Track 1]
VideoTrackInfo[codec=0x34363268,codecName=h264,originalCodec=0x31637661,
originalCodecName=avc1,id=0,profile=-1,level=-1,bitRate=0,language=null,
description=null,codecDescription=H264 - MPEG-4 AVC (part 10)]
[width=596,height=336,sampleAspectRatio=1,sampleAspectRatioBase=1,
frameRate=30000,frameRateBase=1001,orientation=TOP_LEFT,
projection=RECTANGULAR,yaw=0.0,pitch=0.0,roll=0.0,fov=80.0,multiview=null]
Media Playback started.
TrackDescription[id=0,description=Track 1]
VideoTrackInfo[codec=0x34363268,codecName=h264,originalCodec=0x31637661,
originalCodecName=avc1,id=0,profile=-1,level=-1,bitRate=0,language=null,
description=null,codecDescription=H264 - MPEG-4 AVC (part 10)]
[width=596,height=336,sampleAspectRatio=1,sampleAspectRatioBase=1,
frameRate=30000,frameRateBase=1001,orientation=TOP_LEFT,projection=RECTANGULAR,
yaw=0.0,pitch=0.0,roll=0.0,fov=80.0,multiview=null]
Using equalizer: Equalizer[preamp=5.0,bandAmps=[9.6, 7.2, 2.4,
-1.11022E-15, -1.11022E-15, -5.6, -7.2, -7.2, -1.11022E-15, -1.11022E-15]]
Lassen Sie uns die Anwendung, in der wir das Kapitel vlcj - Audio Equalizer aktualisieren, mit einer Overlay-Unterstützung weiter verbessern .
Erstellen Sie eine Überlagerung
Wir können ein Overlay als Swing-Fenster erstellen, das über einem Video angezeigt wird.
class Overlay extends Window {
public Overlay(Window owner) {
super(owner, WindowUtils.getAlphaCompatibleGraphicsConfiguration());
setBackground(new Color(0, 0, 0, 0));
}
@Override
public void paint(Graphics g) {
super.paint(g);
}
}
Überlagerung erstellen und festlegen
Mit dem folgenden Code legen Sie die Überlagerung für das Medium fest.
Overlay overlay = new Overlay(this);
mediaPlayerComponent.mediaPlayer().overlay().set(overlay);
Overlay bei Bedarf aktivieren / deaktivieren.
mediaPlayerComponent.mediaPlayer().overlay().enable(overlayEnabled);
Beispiel
Öffnen Sie das Projekt mediaPlayer, wie es im Kapitel Umgebungs-Setup in Eclipse erstellt wurde.
Aktualisieren Sie App.java mit folgendem Code−
App.java
package com.tutorialspoint.media;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GradientPaint;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Window;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.List;
import javax.swing.BorderFactory;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JToggleButton;
import javax.swing.SwingUtilities;
import javax.swing.UIManager;
import javax.swing.border.Border;
import com.sun.jna.platform.WindowUtils;
import uk.co.caprica.vlcj.media.Media;
import uk.co.caprica.vlcj.media.MediaEventAdapter;
import uk.co.caprica.vlcj.media.MediaParsedStatus;
import uk.co.caprica.vlcj.media.TrackInfo;
import uk.co.caprica.vlcj.player.base.ChapterDescription;
import uk.co.caprica.vlcj.player.base.Equalizer;
import uk.co.caprica.vlcj.player.base.Logo;
import uk.co.caprica.vlcj.player.base.LogoPosition;
import uk.co.caprica.vlcj.player.base.Marquee;
import uk.co.caprica.vlcj.player.base.MarqueePosition;
import uk.co.caprica.vlcj.player.base.MediaPlayer;
import uk.co.caprica.vlcj.player.base.MediaPlayerEventAdapter;
import uk.co.caprica.vlcj.player.base.TitleDescription;
import uk.co.caprica.vlcj.player.base.TrackDescription;
import uk.co.caprica.vlcj.player.component.AudioPlayerComponent;
import uk.co.caprica.vlcj.player.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.player.embedded.fullscreen.adaptive.AdaptiveFullScreenStrategy;
public class App extends JFrame {
private static final long serialVersionUID = 1L;
private static final String TITLE = "My First Media Player";
private static final String VIDEO_PATH = "D:\\Downloads\\sunset-beach.mp4";
private static final String AUDIO_PATH = "D:\\Downloads\\time-to-feel-good.mp3";
private static final String LOGO_PATH = "D:\\Downloads\\logo.png";
private final EmbeddedMediaPlayerComponent mediaPlayerComponent;
private final AudioPlayerComponent audioPlayerComponent;
private final Marquee marquee;
private final Logo logo;
private final Equalizer equalizer;
private final Overlay overlay;
private boolean overlayEnabled = false;
private JButton playButton;
private JButton pauseButton;
private JButton rewindButton;
private JButton skipButton;
private JButton playAudioButton;
private JButton pauseAudioButton;
private JToggleButton toggleButton;
private JButton equalizerButton;
private JToggleButton overlayButton;
public App(String title) {
super(title);
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
super.mouseClicked(e);
System.out.println("Mouse Clicked. (" + e.getX() + "," + e.getY() + ")");
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
super.mouseWheelMoved(e);
System.out.println("Mouse wheel moved. " + e.getScrollAmount());
}
@Override
public void keyPressed(KeyEvent e) {
super.keyPressed(e);
System.out.println("Key pressed. " + e.getKeyCode());
}
@Override
public void playing(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback started.");
}
@Override
public void finished(MediaPlayer mediaPlayer) {
super.playing(mediaPlayer);
System.out.println("Media Playback finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
System.out.println("Failed to load Media.");
}
});
}
};
audioPlayerComponent = new AudioPlayerComponent();
audioPlayerComponent.mediaPlayer().events().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
System.out.println("Audio Playback Finished.");
}
@Override
public void error(MediaPlayer mediaPlayer) {
System.out.println("Failed to load Audio.");
}
});
marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
mediaPlayerComponent.mediaPlayer().logo().set(logo);
mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
@Override
public void mediaParsedChanged(Media media,
MediaParsedStatus newStatus) {
if(newStatus == MediaParsedStatus.DONE) {
MediaPlayer mediaPlayer = mediaPlayerComponent.mediaPlayer();
List<TrackDescription> videoTracks = mediaPlayer.video().trackDescriptions();
System.out.println(videoTracks.get(1));
List<TitleDescription> titles = mediaPlayer.titles().titleDescriptions();
if(!titles.isEmpty()) {
System.out.println(titles.get(0));
}
List<ChapterDescription> chapters = mediaPlayer.chapters().descriptions();
if(!chapters.isEmpty()) {
System.out.println(chapters.get(0));
}
List<? extends TrackInfo> trackInfo = mediaPlayer.media().info().tracks();
if(!trackInfo.isEmpty()) {
System.out.println(trackInfo.get(0));
}
}
}
});
mediaPlayerComponent.mediaPlayer().fullScreen().strategy(new AdaptiveFullScreenStrategy(this));
List<String> presetNames = mediaPlayerComponent.mediaPlayerFactory().equalizer().presets();
System.out.println(presetNames);
equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer("Dance");
overlay = new Overlay(this);
mediaPlayerComponent.mediaPlayer().overlay().set(overlay);
}
public void initialize() {
this.setBounds(100, 100, 600, 400);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
mediaPlayerComponent.release();
System.exit(0);
}
});
JPanel contentPane = new JPanel();
contentPane.setLayout(new BorderLayout());
contentPane.add(mediaPlayerComponent, BorderLayout.CENTER);
//Create a video border
Border videoBorder = BorderFactory.createTitledBorder("Video Controls");
//Create an audio border
Border audioBorder = BorderFactory.createTitledBorder("Audio Controls");
//Create others border
Border othersBorder = BorderFactory.createTitledBorder("Others");
JPanel videoControlsPane = new JPanel();
videoControlsPane.setBorder(videoBorder);
playButton = new JButton("Play");
videoControlsPane.add(playButton);
pauseButton = new JButton("Pause");
videoControlsPane.add(pauseButton);
rewindButton = new JButton("Rewind");
videoControlsPane.add(rewindButton);
skipButton = new JButton("Skip");
videoControlsPane.add(skipButton);
JPanel audioControlsPane = new JPanel();
audioControlsPane.setBorder(audioBorder);
playAudioButton = new JButton("Play");
audioControlsPane.add(playAudioButton);
pauseAudioButton = new JButton("Pause");
audioControlsPane.add(pauseAudioButton);
JPanel othersPane = new JPanel();
othersPane.setBorder(othersBorder);
toggleButton = new JToggleButton("Toggle Full Screen");
equalizerButton = new JButton("Equalizer");
overlayButton = new JToggleButton("Toggle Overlay");
othersPane.add(toggleButton);
othersPane.add(equalizerButton);
othersPane.add(overlayButton);
JPanel controlsPane = new JPanel();
controlsPane.add(videoControlsPane);
controlsPane.add(audioControlsPane);
controlsPane.add(othersPane);
controlsPane.setPreferredSize(new Dimension(400, 120));
contentPane.add(controlsPane, BorderLayout.SOUTH);
playButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().play();
}
});
pauseButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().pause();
}
});
rewindButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(-14000);
}
});
skipButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().controls().skipTime(4000);
}
});
playAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().play();
}
});
pauseAudioButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
audioPlayerComponent.mediaPlayer().controls().pause();
}
});
toggleButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().fullScreen().toggle();
}
});
equalizerButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
mediaPlayerComponent.mediaPlayer().audio().setEqualizer(equalizer);
System.out.println("Using equalizer: " + equalizer);
}
});
overlayButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
overlayEnabled = !overlayEnabled;
mediaPlayerComponent.mediaPlayer().overlay().enable(overlayEnabled);
}
});
this.setContentPane(contentPane);
this.setVisible(true);
}
public void loadVideo(String path) {
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
mediaPlayerComponent.mediaPlayer().media().parsing().parse();
}
public void loadAudio(String path) {
audioPlayerComponent.mediaPlayer().media().startPaused(path);
}
public static void main( String[] args ){
try {
UIManager.setLookAndFeel(
UIManager.getSystemLookAndFeelClassName());
}
catch (Exception e) {
System.out.println(e);
}
App application = new App(TITLE);
application.initialize();
application.setVisible(true);
application.loadVideo(VIDEO_PATH);
application.loadAudio(AUDIO_PATH);
}
}
class Overlay extends Window {
public Overlay(Window owner) {
super(owner, WindowUtils.getAlphaCompatibleGraphicsConfiguration());
setBackground(new Color(0, 0, 0, 0));
}
@Override
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D)g;
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
GradientPaint gp = new GradientPaint(
180.0f, 280.0f,
new Color(255, 255, 255, 255),
250.0f,
380.0f,
new Color(255, 255, 0, 0)
);
g2.setPaint(gp);
g2.setFont(new Font("Serif", Font.PLAIN,32));
g2.drawString("TutorialsPoint",200, 200);
}
}
Führen Sie die Anwendung aus, indem Sie mit der rechten Maustaste auf die Datei klicken und Als Java-Anwendung ausführen auswählen. Wenn nach einem erfolgreichen Start alles in Ordnung ist, sollte das folgende Ergebnis angezeigt werden:
Klicken Sie nun auf die Schaltfläche "Überlagerung umschalten" und sehen Sie den Überlagerungstext über Video wie folgt.