vlcj - Hướng dẫn nhanh

Vlcj là một dự án Mã nguồn mở giúp chạy trình phát VLC trong một ứng dụng Java. Nó cung cấp tùy chọn để khám phá trình phát VLC được cài đặt trong hệ thống và liên kết nó để xây dựng phần mềm máy chủ và máy khách trình phát phương tiện bằng Java.

Sử dụng Java, bạn có thể chỉ cần phát các tệp phương tiện cục bộ và thậm chí bạn có thể tạo video theo yêu cầu máy chủ phát trực tuyến.

Sử dụng

vlcj là một thư viện dựa trên java khá phổ biến và nó được sử dụng trong các phần mềm dựa trên java khác nhau như tàu nghiên cứu hải dương học và giải pháp IPTV và rạp chiếu phim gia đình. Một số ví dụ nổi tiếng là máy quay video Nguồn Mở tại Elphel và lập bản đồ video cho dự án Bản đồ Phố Mở.

Cú pháp

Tạo thành phần EmbeddedMediaPlayerComponent

EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();

Phát video

Phát video rất dễ dàng. Chuyển đường dẫn của tệp và nó sẽ phát video.

//pass path to media file
mediaPlayerComponent.mediaPlayer().media().play(path);

VLC Player

VLC Media Player là một trình phát đa phương tiện rất phổ biến và có sẵn cho Linux, MacOS và Windows. Nó đi kèm với hàng tấn codec để phát bất kỳ loại phương tiện nào mà không cần cài đặt codec phương tiện bên ngoài. Nó cũng hỗ trợ phát video qua các mạng và cho phép chuyển mã các phương tiện. Sử dụng trình phát phương tiện VLC, chúng tôi có thể phát các tệp phương tiện cục bộ, luồng mạng cục bộ, luồng video dựa trên internet, DVD, Bluray, webcam, video kỹ thuật số và nhiều hơn nữa.

VLC Media player được biên dịch thành mã nền tảng gốc và không thể được sử dụng trực tiếp bởi các chương trình Java. Để khắc phục sự cố này, VLC Media Player cung cấp một API gốc (Giao diện lập trình ứng dụng) được gọi là LibVLC và là một phần của VLC Media Player. vlcj sau đó cung cấp lớp java cần thiết để tương tác với VLC Media Player bằng LibVLC.

Tính năng vlcj

vlcj là một libary trưởng thành. Nó cung cấp các tính năng cần thiết sau đây khi làm việc với trình phát phương tiện VLC.

  • Java Bindings - vlcj cung cấp liên kết Java với tất cả các hoạt động gốc của VLC Media Player để chúng tôi có thể lập trình chức năng Media Player bằng lập trình Java.

  • Framework - vlcj hoạt động như một khuôn khổ đóng gói bất kỳ hành vi cụ thể nào của nền tảng và xử lý mã gốc bằng cách cung cấp một giao diện lập trình cấp cao đơn giản cho LibVLC.

  • Robust- vlcj đảm bảo việc sử dụng chính xác các API LibVLC. Vì sử dụng không đúng cách có thể dẫn đến sự cố hoặc bế tắc.

  • Handles Asynchronous native events- vlcj đăng ký các lệnh gọi lại cho các sự kiện gốc không đồng bộ mà sau đó có thể được xử lý trong mẫu trình nghe java một cách dễ dàng. Mô hình lập trình này giúp ngăn chặn bế tắc.

Ứng dụng vlcj

Sau đây là một số ví dụ mà vlcj có thể được sử dụng.

  • Java Based - Dựa trên java, chúng tôi có thể tạo trình phát đa phương tiện trong các chương trình swing, awt, swt, javafx và openGL.

  • IDE - Các ứng dụng nền tảng máy khách đa dạng dựa trên Eclipse / NetBeans có thể sử dụng vlcj cho các ứng dụng dựa trên phương tiện.

  • Internet Radio Player - Sử dụng vlcj, chúng tôi có thể tạo một trình phát âm thanh có thể phát trực tuyến radio dựa trên internet.

  • YouTube Player - Sử dụng vlcj, chúng ta có thể tạo một trình phát YouTube có thể phát video YouTube.

  • Transcoder - Sử dụng vlcj, chúng tôi có thể chuyển mã bất kỳ video nào.

  • Network streaming server - Sử dụng vlcj, chúng ta có thể tạo video theo yêu cầu máy chủ.

  • Network streaming client - Sử dụng vlcj, chúng tôi có thể tạo video theo yêu cầu của khách hàng.

  • Video Playing Applet - Sử dụng vlcj, chúng ta có thể tạo một applet có thể phát video.

  • WebCam - Sử dụng vlcj, chúng ta có thể tạo ứng dụng webcam.

  • CCTV Camera - Sử dụng vlcj, chúng ta có thể tạo ứng dụng camera CCTV phát video do camera CCTV ghi lại.

Giấy phép

vlcj có thể phân phối theo các điều khoản cấp phép GPL . Trong trường hợp sử dụng cho mục đích thương mại mà không có điều kiện về giấy phép GPL, hãy liên hệ với nhóm tại Caprica Software Limited .

vlcj là một thư viện dựa trên Java, vì vậy yêu cầu đầu tiên là phải cài đặt JDK trên máy của bạn.

Bước 1 - Thiết lập Bộ phát triển Java (JDK)

Bạn có thể tải xuống phiên bản SDK mới nhất từ ​​trang web Java của Oracle - Java SE Downloads. Bạn sẽ tìm thấy hướng dẫn cài đặt JDK trong các tệp đã tải xuống, hãy làm theo hướng dẫn đã cho để cài đặt và định cấu hình thiết lập. Cuối cùng đặt các biến môi trường PATH và JAVA_HOME để tham chiếu đến thư mục chứa java và javac, thường là java_install_dir / bin và java_install_dir tương ứng.

Nếu bạn đang chạy Windows và đã cài đặt JDK trong C: \ jdk1.6.0_15, bạn sẽ phải đặt dòng sau vào tệp C: \ autoexec.bat của mình.

set PATH=C:\jdk1.6.0_15\bin;%PATH% 
set JAVA_HOME=C:\jdk1.6.0_15

Ngoài ra, trên Windows NT / 2000 / XP, bạn sẽ phải nhấp chuột phải vào Máy tính của tôi, chọn Thuộc tính → Nâng cao → Biến môi trường. Sau đó, bạn sẽ phải cập nhật giá trị PATH và nhấp vào nút OK.

Trên Unix (Solaris, Linux, v.v.), nếu SDK được cài đặt trong /usr/local/jdk1.6.0_15 và bạn sử dụng trình bao C, bạn sẽ phải đặt phần sau vào tệp .cshrc của mình.

setenv PATH /usr/local/jdk1.6.0_15/bin:$PATH 
setenv JAVA_HOME /usr/local/jdk1.6.0_15

Ngoài ra, nếu bạn sử dụng Môi trường phát triển tích hợp (IDE) như Borland JBuilder, Eclipse, IntelliJ IDEA hoặc Sun ONE Studio, bạn sẽ phải biên dịch và chạy một chương trình đơn giản để xác nhận rằng IDE biết bạn đã cài đặt Java ở đâu. Nếu không, bạn sẽ phải thực hiện thiết lập thích hợp như được cung cấp trong tài liệu của IDE.

Bước 2 - Cài đặt thư viện vlcj cùng với các phụ thuộc

Tải xuống các lọ sau từ MVNRepository và sử dụng chúng trong classpath của bạn.

  • vlc-4.4.4.jar
  • vlc-natives-4.1.0.jar
  • jna-5.2.0.jar
  • jna-platform-5.2.0.jar

Đảm bảo rằng bạn đặt biến CLASSPATH của mình trên thư mục này đúng cách, nếu không bạn sẽ gặp sự cố khi chạy ứng dụng của mình.

Bước 3 - Thiết lập IDE Eclipse

Tất cả các ví dụ trong hướng dẫn này đã được viết bằng Eclipse IDE. Vì vậy, chúng tôi khuyên bạn nên cài đặt phiên bản Eclipse mới nhất trên máy tính của mình.

Để cài đặt Eclipse IDE, hãy tải xuống các tệp nhị phân Eclipse mới nhất từ https://www.eclipse.org/downloads/. Sau khi bạn tải xuống bản cài đặt, hãy giải nén bản phân phối nhị phân vào một vị trí thuận tiện. Ví dụ: trong C: \ eclipse trên Windows hoặc / usr / local / eclipse trên Linux / Unix và cuối cùng đặt biến PATH một cách thích hợp.

Eclipse có thể được khởi động bằng cách thực hiện các lệnh sau trên máy Windows hoặc bạn có thể chỉ cần nhấp đúp vào eclipse.exe

%C:\eclipse\eclipse.exe

Eclipse có thể được khởi động bằng cách thực hiện các lệnh sau trên máy Unix (Solaris, Linux, v.v.) -

$/usr/local/eclipse/eclipse

Bước 4 - Tạo dự án Maven

C:\MVN>mvn archetype:generate
-DgroupId = com.tutorialspoint.media 
-DartifactId = mediaPlayer 
-DarchetypeArtifactId = maven-archetype-quickstart 
-DinteractiveMode = false

Nó sẽ tạo ra một dự án maven. Bây giờ cập nhật tệp pom.xml như sau:

<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>

Chạy lệnh follwing để cập nhật các phụ thuộc maven và xây dựng dự án.

mvn package

Khi lệnh thành công. Nhập dự án trung gian dựa trên maven trong Eclipse dưới dạng dự án maven. Rest Eclipse sẽ xử lý.

Bước 5 - Cài đặt VLC Player

Tải xuống phiên bản mới nhất của VLC Player từ VLC media player trên trang chủ của họ và cài đặt bằng trình cài đặt của họ. thư viện vlcj 4.4 cần VLC 3.0 trở đi và Java 8 làm điều kiện tiên quyết.

Khám phá trình phát VLC

thư viện vlcj cung cấp một lớp tự động phát hiện trình phát VLC đã cài đặt trong hệ thống bằng cú pháp sau.

EmbeddedMediaPlayerComponent mediaPlayerComponent = = new EmbeddedMediaPlayerComponent();

Tải video

Giờ đây, bằng cách sử dụng phương tiện, chúng ta có thể dễ dàng tải video trong ứng dụng của mình bằng cú pháp sau

mediaPlayerComponent.mediaPlayer().media().startPaused(path);

Phát video

Giờ đây, bằng cách sử dụng các điều khiển, chúng tôi có thể dễ dàng phát video trong ứng dụng của mình bằng cú pháp sau

mediaPlayerComponent.mediaPlayer().controls().play();

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Nhấp vào Nút Phát và video sẽ bắt đầu phát.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj Play Video với khả năng tạm dừng video.

Tạm dừng video

Giờ đây, bằng cách sử dụng các điều khiển, chúng tôi có thể dễ dàng tạm dừng video trong ứng dụng của mình bằng cú pháp sau

mediaPlayerComponent.mediaPlayer().controls().pause();

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Nhấp vào nút Play và video sẽ bắt đầu phát sau đó nhấp vào nút tạm dừng. Bây giờ video sẽ bị tạm dừng.

Thí dụ

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Giờ đây, bạn có thể phát, tạm dừng và tua lại video.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương Tạm dừng video vlcj với khả năng Tìm kiếm video.

Tìm kiếm video

Giờ đây, bằng cách sử dụng các điều khiển, chúng tôi có thể dễ dàng tua lại video trong ứng dụng của mình bằng cú pháp sau:

mediaPlayerComponent.mediaPlayer().controls().skipWhile(10000);

Ở đây chúng tôi đang chuyển giá trị dương (độ dài để chuyển tiếp) để tua lại video.

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Giờ đây, bạn có thể phát, tạm dừng, tua lại và bỏ qua video.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj Seek Video với khả năng xử lý sự kiện phát.

Xử lý sự kiện chơi

Thêm trình xử lý sự kiện chơi bằng cú pháp sau (Phương pháp mẫu) -

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
   @Override
   public void playing(MediaPlayer mediaPlayer) {
   }
};

Hoặc chúng ta có thể thêm trình xử lý sự kiện đang chơi bằng cú pháp sau (Phương thức trình xử lý) -

mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
   @Override
   public void playing(MediaPlayer mediaPlayer) {
   }
});

Khi một video được phát thì sự kiện phát sẽ được nâng lên.

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ bạn có thể thấy trong nhật ký bảng điều khiển rằng khi video được tải, nó sẽ hiển thị một thông báo như sau

Media Playback started.

Bây giờ hãy nhấp vào các nút khác nhau. Khi bạn nhấp vào nút play, thông báo trên sẽ xuất hiện trong bảng điều khiển.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Phát sự kiện video với khả năng xử lý sự kiện đã hoàn thành.

Xử lý sự kiện đã kết thúc

Thêm trình xử lý sự kiện đã hoàn thành bằng cú pháp sau (Phương pháp mẫu) -

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
   @Override
   public void finished(MediaPlayer mediaPlayer) {
   }
};

Hoặc chúng ta có thể thêm trình xử lý sự kiện đã hoàn thành bằng cú pháp sau (Phương thức trình xử lý) -

mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
   @Override
   public void finished(MediaPlayer mediaPlayer) {
   }
});

Khi một video được phát hoàn toàn thì sự kiện kết thúc sẽ được nâng lên.

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ bạn phát video và đợi cho đến khi nó kết thúc, nó sẽ hiển thị một thông báo như sau

Media Playback finished.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Sự kiện video đã hoàn thành với khả năng xử lý lỗi.

Xử lý sự kiện lỗi

Thêm trình xử lý sự kiện lỗi bằng cú pháp sau (Phương pháp mẫu) -

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
   @Override
   public void error(MediaPlayer mediaPlayer) {
   }
};

Hoặc chúng ta có thể thêm trình xử lý sự kiện lỗi bằng cú pháp sau (Phương thức trình xử lý) -

mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
   @Override
   public void error(MediaPlayer mediaPlayer) {
   }
});

Khi không tải được video thì sự kiện lỗi sẽ xuất hiện. Nhưng khi phương thức play trả về ngay lập tức và sự kiện lỗi sẽ xuất hiện (trong trường hợp video được tải và không chạy được) sau đó. Vì vậy, chúng tôi phải xử lý sự kiện lỗi theo cách không đồng bộ.

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Ở đây cung cấp một đường dẫn không hợp lệ đến tệp phương tiện. Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ sẽ thấy một thông báo trong bảng điều khiển như sau

Failed to load Media.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật vlcj - Lỗi khi tải chương Sự kiện video với khả năng xử lý sự kiện Chuột.

Xử lý sự kiện chuột

Thêm trình xử lý sự kiện chuột bằng cú pháp sau (Phương pháp mẫu) -

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
   @Override
   public void mouseClicked(MouseEvent e) {
   }
   @Override
   public void mouseWheelMoved(MouseWheelEvent e) {
   }
};

Hoặc chúng ta có thể thêm trình xử lý sự kiện chuột bằng cú pháp sau (Phương thức trình xử lý) -

Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();
videoSurface.addMouseListener(new MouseAdapter() {
   @Override
   public void mouseClicked(MouseEvent e) {
   }
});
videoSurface.addMouseWheelListener(new MouseWheelListener() {
   @Override
   public void mouseWheelMoved(MouseWheelEvent e) {
   }
});

Trong trường hợp phương thức Listener trên windows, chúng ta cần tắt xử lý nhập chuột gốc bằng cú pháp sau.

mediaPlayerComponent.mediaPlayer().input().enableMouseInputHandling(false);

Khi chúng ta sử dụng chuột trong bề mặt video thì sự kiện chuột sẽ xuất hiện.

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ hãy nhấp vào trong video và bạn sẽ thấy một thông báo trong bảng điều khiển như sau−

Media Playback started.
Media Playback started.
Mouse Clicked. (377,180)
Mouse Clicked. (377,180)
Mouse Clicked. (356,120)
Media Playback finished.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Xử lý sự kiện chuột với khả năng xử lý sự kiện bàn phím.

Xử lý sự kiện bàn phím

Thêm trình xử lý sự kiện chuột bằng cú pháp sau (Phương pháp mẫu) -

mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
   @Override
   public void keyPressed(KeyEvent e) {
   }
};

Hoặc chúng ta có thể thêm trình xử lý sự kiện bàn phím bằng cú pháp sau (Phương thức trình xử lý) -

Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();

videoSurface.addKeyListener(new KeyAdapter() {
   @Override
   public void keyPressed(KeyEvent e) {
   }
});

Trong trường hợp phương thức Listener trên windows, chúng ta cần tắt xử lý nhập bàn phím gốc bằng cú pháp sau.

mediaPlayerComponent.mediaPlayer().input().enableKeyInputHandling(false);

Khi chúng ta nhấn phím bất kỳ thì sự kiện bàn phím sẽ được nâng lên.

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ nhấn phím bất kỳ và bạn sẽ thấy các thông báo trong bảng điều khiển như sau:

Media Playback started.
Media Playback started.
Mouse Clicked. (345,231)
Key pressed. 82
Media Playback finished.
Key pressed. 82

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Xử lý sự kiện bàn phím với khả năng Phát âm thanh. Tương tự như Phát lại Video, chúng ta cũng có thể điều khiển phát lại Âm thanh một cách dễ dàng.

Tạo trình phát âm thanh

AudioPlayerComponent audioPlayerComponent = new AudioPlayerComponent();

Tải âm thanh

Bây giờ sử dụng phương tiện, chúng tôi có thể dễ dàng tải âm thanh trong ứng dụng của mình bằng cú pháp sau

audioPlayerComponent.mediaPlayer().media().startPaused(path);

Phát âm thanh

Giờ đây, bằng cách sử dụng các điều khiển, chúng tôi có thể dễ dàng phát một đoạn âm thanh trong ứng dụng của mình bằng cú pháp sau:

audioPlayerComponent.mediaPlayer().controls().play();

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ nhấn nút phát trong Điều khiển âm thanh và một clip sẽ bắt đầu phát. Nhấp vào nút tạm dừng sẽ tạm dừng âm thanh.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Trình phát âm thanh với sự hỗ trợ của Marquee. Chúng tôi có thể thêm một văn bản làm lớp phủ trên video.

Tạo và xây dựng một marquee

Marquee marquee = Marquee.marquee()
   .text("TutorialsPoint")
   .size(40)
   .colour(Color.WHITE)    		    
   .position(MarqueePosition.BOTTOM_RIGHT)
   .opacity(0.5f)
   .enable();

Đặt Marquee

Bây giờ bằng cách sử dụng phương pháp marquee, chúng ta có thể dễ dàng thiết lập một marquee trên video trong ứng dụng của mình bằng cú pháp sau:

mediaPlayerComponent.mediaPlayer().marquee().set(marquee);

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Marquee với hỗ trợ Logo. Chúng tôi có thể thêm một văn bản làm lớp phủ trên video.

Tạo và xây dựng logo

Logo logo = Logo.logo()
   .file(LOGO_PATH)
   .position(LogoPosition.TOP_LEFT)
   .opacity(0.3f)
   .enable();

Đặt biểu trưng

Giờ đây, sử dụng phương pháp logo, chúng tôi có thể dễ dàng đặt logo trên video trong ứng dụng của mình bằng cú pháp sau

mediaPlayerComponent.mediaPlayer().logo().set(logo);

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Logo với hỗ trợ Thông tin phương tiện.

Phân tích cú pháp Media bằng mediaPlayer

mediaPlayerComponent.mediaPlayer().media().parsing().parse();

Xử lý sự kiện phân tích cú pháp

mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
   @Override
   public void mediaParsedChanged(Media media, MediaParsedStatus newStatus) {
   }
}

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Và nó sẽ hiển thị các thông báo như sau

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]

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Media Information với hỗ trợ phát lại Toàn màn hình.

Đính kèm chiến lược toàn màn hình

Chúng tôi đang sử dụng AdaptiveFullScreenStrategy, sử dụng nội bộ XFullScreenStrategy, một chiến lược toàn màn hình gốc dành cho Linux và Win32FullScreenStrategy, một chiến lược toàn màn hình riêng cho windows.

mediaPlayerComponent.mediaPlayer().fullScreen().strategy(
   new AdaptiveFullScreenStrategy(this));

Bật chế độ toàn màn hình

Mã sau chuyển đổi chế độ toàn màn hình.

mediaPlayerComponent.mediaPlayer().fullScreen().toggle();

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ hãy nhấp vào Nút Toàn màn hình và xem video ở chế độ toàn màn hình.

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Full Screen Video với hỗ trợ bộ cân bằng âm thanh.

Tạo bộ cân bằng âm thanh

Chúng ta có thể tạo bộ cân bằng với tất cả các giá trị là số 0 bằng cách sử dụng phiên bản MediaPlayerFactory.

Equalizer equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer();

Nhận các giá trị bộ cân bằng đặt trước

Mã sau lấy tên bộ cân bằng đặt trước, ví dụ như Phẳng, Cổ điển, Câu lạc bộ, Khiêu vũ, Tai nghe, v.v.

List<String> presetNames = factory.equalizer().presets();

Sử dụng bộ cân bằng cài sẵn.

Equalizer equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer(presetName);

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ nhấp vào nút Equalizer và xem chi tiết bộ chỉnh âm trong bảng điều khiển như sau.

[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]]

Hãy nâng cao ứng dụng hơn nữa, trong đó chúng tôi sẽ cập nhật chương vlcj - Audio Equalizer với hỗ trợ lớp phủ.

Tạo lớp phủ

Chúng ta có thể tạo lớp phủ dưới dạng cửa sổ xoay để hiển thị trên video.

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

Tạo và đặt lớp phủ

Mã sau thiết lập lớp phủ cho phương tiện.

Overlay overlay = new Overlay(this); 
mediaPlayerComponent.mediaPlayer().overlay().set(overlay);

Bật / Tắt Lớp phủ theo yêu cầu.

mediaPlayerComponent.mediaPlayer().overlay().enable(overlayEnabled);

Thí dụ

Mở mediaPlayer của dự án như được tạo trong chương Thiết lập môi trường trong Eclipse.

Cập nhật App.java bằng mã sau

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

Chạy ứng dụng bằng cách nhấp chuột phải vào tệp và chọn chạy dưới dạng Ứng dụng Java. Sau khi khởi động thành công, nếu mọi thứ đều ổn thì nó sẽ hiển thị kết quả sau:

Bây giờ hãy nhấp vào nút Toggle Overlay và xem văn bản lớp phủ trên Video như sau.