vlcj-퀵 가이드

vlcj는 Java 기반 애플리케이션 내에서 VLC 플레이어를 실행하는 데 도움이되는 오픈 소스 프로젝트입니다. 시스템에 설치된 VLC 플레이어를 검색하고 바인딩하여 Java를 사용하여 미디어 플레이어 클라이언트 및 서버 소프트웨어를 구축하는 옵션을 제공합니다.

Java를 사용하면 간단히 로컬 미디어 파일을 재생할 수 있으며 주문형 스트리밍 서버에 비디오를 만들 수도 있습니다.

용법

vlcj는 꽤 인기있는 자바 기반 라이브러리이며 해양학 연구 선박 및 맞춤형 IPTV 및 홈 시네마 솔루션과 같은 다양한 자바 기반 소프트웨어에서 사용됩니다. 유명한 사례 중 일부는 Elphel의 오픈 소스 비디오 카메라와 Open Street Map 프로젝트의 비디오 매핑입니다.

통사론

EmbeddedMediaPlayerComponent 구성 요소 만들기

EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();

비디오 재생

비디오 재생은 매우 쉽습니다. 파일 경로를 전달하면 동영상이 재생됩니다.

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

VLC 플레이어

VLC Media Player는 매우 인기있는 미디어 플레이어이며 Linux, MacOS 및 Windows에서 사용할 수 있습니다. 외부 미디어 코덱을 설치할 필요없이 모든 종류의 미디어를 재생할 수 있도록 수많은 코덱이 번들로 제공됩니다. 또한 네트워크를 통한 비디오 스트리밍을 지원하고 미디어 트랜스 코딩을 허용합니다. VLC 미디어 플레이어를 사용하여 로컬 미디어 파일, 로컬 네트워크 스트림, 인터넷 기반 비디오 스트림, DVD, Bluray, 웹캠, 디지털 비디오 등을 재생할 수 있습니다.

VLC 미디어 플레이어는 네이티브 플랫폼 코드로 컴파일되며 Java 프로그램에서 직접 사용할 수 없습니다. 이러한 문제를 극복하기 위해 VLC Media Player는 LibVLC라는 고유 API (Application Programming Interface)를 제공하며 VLC Media Player의 일부입니다. 그런 다음 vlcj는 LibVLC를 사용하여 VLC Media Player와 상호 작용하는 데 필요한 Java 계층을 제공합니다.

vlcj 기능

vlcj는 성숙한 도서관입니다. VLC 미디어 플레이어로 작업하는 동안 필수적인 다음 기능을 제공합니다.

  • Java Bindings − vlcj는 VLC Media Player의 모든 기본 작업에 대한 Java 바인딩을 제공하므로 Java 프로그래밍을 사용하여 Media Player 기능을 프로그래밍 할 수 있습니다.

  • Framework − vlcj는 LibVLC를위한 간단한 고수준 프로그래밍 인터페이스를 제공하여 모든 플랫폼 특정 동작 및 네이티브 코드 처리를 캡슐화하는 프레임 워크 역할을합니다.

  • Robust− vlcj는 LibVLC API의 올바른 사용을 보장합니다. 잘못 사용하면 충돌이나 교착 상태가 발생할 수 있습니다.

  • Handles Asynchronous native events− vlcj는 자바 리스너 패턴에서 쉽게 처리 할 수있는 비동기 네이티브 이벤트에 대한 콜백을 등록합니다. 이 프로그래밍 모델은 교착 상태를 방지하는 데 도움이됩니다.

vlcj 응용 프로그램

다음은 vlcj를 사용할 수있는 몇 가지 예입니다.

  • Java Based − Java 기반이기 때문에 swing, awt, swt, javafx 및 openGL 프로그램 내에서 미디어 플레이어를 만들 수 있습니다.

  • IDE − Eclipse / NetBeans 기반 리치 클라이언트 플랫폼 애플리케이션은 미디어 기반 애플리케이션에 vlcj를 사용할 수 있습니다.

  • Internet Radio Player − vlcj를 사용하여 인터넷 기반 라디오를 스트리밍 할 수있는 오디오 플레이어를 만들 수 있습니다.

  • YouTube Player − vlcj를 사용하여 YouTube 동영상을 스트리밍 할 수있는 YouTube 플레이어를 만들 수 있습니다.

  • Transcoder − vlcj를 사용하여 모든 비디오를 트랜스 코딩 할 수 있습니다.

  • Network streaming server − vlcj를 사용하여 주문형 비디오 서버를 만들 수 있습니다.

  • Network streaming client − vlcj를 사용하여 주문형 비디오 클라이언트를 만들 수 있습니다.

  • Video Playing Applet − vlcj를 사용하여 비디오를 재생할 수있는 애플릿을 만들 수 있습니다.

  • WebCam − vlcj를 사용하여 웹캠 애플리케이션을 만들 수 있습니다.

  • CCTV Camera − vlcj를 이용하여 CCTV 카메라로 녹화 된 영상을 재생하는 CCTV 카메라 애플리케이션을 만들 수 있습니다.

특허

vlcj는 GPL 라이선스 조건에 따라 배포 할 수 있습니다. GPL 라이센스 조건없이 상업적으로 사용하는 경우 Caprica Software Limited 팀에 문의하십시오 .

vlcj는 Java 기반 라이브러리이므로 첫 번째 요구 사항은 시스템에 JDK를 설치하는 것입니다.

1 단계-JDK (Java Development Kit) 설정

Oracle의 Java 사이트 인 Java SE Downloads 에서 최신 버전의 SDK를 다운로드 할 수 있습니다 . 다운로드 한 파일에서 JDK 설치 지침을 찾을 수 있으며, 주어진 지침에 따라 설치 및 구성을 수행합니다. 마지막으로 java 및 javac (일반적으로 각각 java_install_dir / bin 및 java_install_dir)가 포함 된 디렉토리를 참조하도록 PATH 및 JAVA_HOME 환경 변수를 설정합니다.

Windows를 실행 중이고 C : \ jdk1.6.0_15에 JDK를 설치 한 경우 C : \ autoexec.bat 파일에 다음 행을 입력해야합니다.

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

또는 Windows NT / 2000 / XP에서는 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성 → 고급 → 환경 변수를 선택해야합니다. 그런 다음 PATH 값을 업데이트하고 확인 버튼을 클릭해야합니다.

Unix (Solaris, Linux 등)에서 SDK가 /usr/local/jdk1.6.0_15에 설치되어 있고 C 셸을 사용하는 경우 .cshrc 파일에 다음을 넣어야합니다.

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

또는 Borland JBuilder, Eclipse, IntelliJ IDEA 또는 Sun ONE Studio와 같은 IDE (통합 개발 환경)를 사용하는 경우 간단한 프로그램을 컴파일하고 실행하여 IDE가 Java를 설치 한 위치를 알고 있는지 확인해야합니다. 그렇지 않으면 IDE 문서에 제공된대로 적절한 설정을 수행해야합니다.

2 단계-종속성과 함께 vlcj 라이브러리 설치

MVNRepository 에서 다음 jar를 다운로드 하고 클래스 경로에서 사용하십시오.

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

이 디렉토리에서 CLASSPATH 변수를 올바르게 설정했는지 확인하십시오. 그렇지 않으면 응용 프로그램을 실행하는 동안 문제가 발생합니다.

3 단계-Eclipse IDE 설정

이 튜토리얼의 모든 예제는 Eclipse IDE를 사용하여 작성되었습니다. 따라서 컴퓨터에 최신 버전의 Eclipse를 설치하는 것이 좋습니다.

Eclipse IDE를 설치하려면 다음에서 최신 Eclipse 바이너리를 다운로드하십시오. https://www.eclipse.org/downloads/. 설치를 다운로드 한 후 편리한 위치에 바이너리 배포의 압축을 풉니 다. 예를 들어 Windows의 C : \ eclipse 또는 Linux / Unix의 / usr / local / eclipse에서 마지막으로 PATH 변수를 적절하게 설정합니다.

Eclipse는 Windows 시스템에서 다음 명령을 실행하여 시작하거나 eclipse.exe를 두 번 클릭 할 수 있습니다.

%C:\eclipse\eclipse.exe

Eclipse는 Unix (Solaris, Linux 등) 시스템에서 다음 명령을 실행하여 시작할 수 있습니다.

$/usr/local/eclipse/eclipse

4 단계-Maven 프로젝트 만들기

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

메이븐 프로젝트를 생성합니다. 이제 다음과 같이 pom.xml 파일을 업데이트하십시오.

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

다음 명령을 실행하여 Maven 종속성을 업데이트하고 프로젝트를 빌드하십시오.

mvn package

일단 명령이 성공합니다. Eclipse에서 maven 기반 미디어 플레이어 프로젝트를 maven 프로젝트로 가져옵니다. 나머지 Eclipse가 처리합니다.

5 단계-VLC 플레이어 설치

홈 페이지 VLC 미디어 플레이어 에서 최신 버전의 VLC 플레이어를 다운로드 하고 설치 프로그램을 사용하여 설치합니다. vlcj 4.4 라이브러리에는 VLC 3.0 이상과 Java 8이 전제 조건으로 필요합니다.

VLC 플레이어 검색

vlcj 라이브러리는 다음 구문을 사용하여 시스템에 설치된 VLC 플레이어의 자동 검색을 수행하는 클래스를 제공합니다.

EmbeddedMediaPlayerComponent mediaPlayerComponent = = new EmbeddedMediaPlayerComponent();

비디오로드

이제 미디어를 사용하여 다음 구문을 사용하여 애플리케이션에서 비디오를 쉽게로드 할 수 있습니다.

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

동영상 재생

이제 컨트롤을 사용하여 다음 구문을 사용하여 애플리케이션에서 비디오를 쉽게 재생할 수 있습니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

재생 버튼을 클릭하면 동영상이 재생됩니다.

일시 중지 비디오 기능으로 vlcj Play Video 챕터를 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

비디오 일시 중지

이제 컨트롤을 사용하여 다음 구문을 사용하여 애플리케이션에서 비디오를 쉽게 일시 중지 할 수 있습니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 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;

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 비디오를 재생, 일시 중지 및 되 감을 수 있습니다.

Seek video 기능으로 vlcj Pause Video 챕터를 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

비디오 찾기

이제 컨트롤을 사용하여 다음 구문을 사용하여 애플리케이션에서 비디오를 쉽게 되 감을 수 있습니다.

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

여기서 우리는 비디오를 되감기 위해 양의 값 (앞으로 갈 길이)을 전달합니다.

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 비디오를 재생, 일시 중지, 되감기 및 건너 뛸 수 있습니다.

이벤트 재생 기능을 처리하여 vlcj Seek Video 챕터를 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

재생 이벤트 처리

다음 구문을 사용하여 재생 이벤트 핸들러 추가 (템플릿 방식) −

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

또는 다음 구문 (Listener 메서드)을 사용하여 재생 이벤트 핸들러를 추가 할 수 있습니다.

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

동영상이 재생되면 playing 이벤트가 발생합니다.

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 콘솔 로그에서 비디오가로드되면 다음과 같은 메시지가 표시되는 것을 볼 수 있습니다.

Media Playback started.

이제 다양한 버튼을 클릭하십시오. 재생 버튼을 클릭하면 위의 메시지가 콘솔에 나타납니다.

완료된 이벤트 기능을 처리하여 vlcj-Playing Video Event 장을 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

완료된 이벤트 처리

다음 구문 (템플릿 방식)을 사용하여 완료된 이벤트 핸들러 추가

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

또는 다음 구문 (Listener 메서드)을 사용하여 완료된 이벤트 핸들러를 추가 할 수 있습니다.

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

동영상이 완전히 재생되면 finish 이벤트가 발생합니다.

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 비디오를 재생하고 완료 될 때까지 기다리면 다음과 같은 메시지가 표시됩니다.

Media Playback finished.

오류 처리 기능이있는 vlcj-완료된 비디오 이벤트 장을 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

오류 이벤트 처리

다음 구문을 사용하여 오류 이벤트 핸들러 추가 (템플릿 방식)-

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

또는 다음 구문 (Listener 방식)을 사용하여 오류 이벤트 핸들러를 추가 할 수 있습니다.

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

동영상로드에 실패하면 오류 이벤트가 발생합니다. 그러나 play 메서드가 즉시 반환되므로 나중에 오류 이벤트가 발생합니다 (비디오가로드되고 실행에 실패한 경우). 따라서 오류 이벤트를 비동기 방식으로 처리해야합니다.

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

여기에 미디어 파일에 대한 잘못된 경로가 제공되었습니다. 파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 콘솔에 다음과 같은 메시지가 표시됩니다.

Failed to load Media.

vlcj- 마우스 이벤트 처리 기능을 사용하여 비디오 이벤트를로드하는 동안 오류가 발생하는 장을 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

마우스 이벤트 처리

다음 구문을 사용하여 마우스 이벤트 핸들러 추가 (템플릿 방식) −

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

또는 다음 구문 (Listener 방식)을 사용하여 마우스 이벤트 핸들러를 추가 할 수 있습니다.

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

윈도우에서 Listener 메소드의 경우 다음 구문을 사용하여 기본 마우스 입력 처리를 비활성화해야합니다.

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

비디오 표면에서 마우스를 사용하면 마우스 이벤트가 발생합니다.

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 비디오를 클릭하면 다음과 같은 메시지가 콘솔에 표시됩니다.

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

vlcj- 키보드 이벤트 처리 기능을 사용하여 마우스 이벤트 처리 장을 업데이트 할 응용 프로그램을 더욱 강화 해 보겠습니다 .

키보드 이벤트 처리

다음 구문을 사용하여 마우스 이벤트 핸들러 추가 (템플릿 방식) −

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

또는 다음 구문 (Listener 방식)을 사용하여 키보드 이벤트 핸들러를 추가 할 수 있습니다.

Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();

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

Windows에서 Listener 방식의 경우 다음 구문을 사용하여 기본 키보드 입력 처리를 비활성화해야합니다.

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

아무 키나 누르면 키보드 이벤트가 발생합니다.

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 아무 키나 누르면 다음과 같은 메시지가 콘솔에 표시됩니다.

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

오디오 재생 기능을 사용하여 vlcj-키보드 이벤트 처리 장을 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 . 비디오 재생과 마찬가지로 오디오 재생도 쉽게 제어 할 수 있습니다.

오디오 플레이어 만들기

AudioPlayerComponent audioPlayerComponent = new AudioPlayerComponent();

오디오로드

이제 미디어를 사용하여 다음 구문을 사용하여 응용 프로그램에서 오디오를 쉽게로드 할 수 있습니다.

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

오디오 재생

이제 컨트롤을 사용하여 다음 구문을 사용하여 응용 프로그램에서 오디오 클립을 쉽게 재생할 수 있습니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 오디오 컨트롤에서 재생 버튼을 누르면 클립이 재생되기 시작합니다. 일시 중지 버튼을 클릭하면 오디오가 일시 중지됩니다.

Marquee를 지원하는 vlcj-Audio Player 챕터를 업데이트 할 응용 프로그램을 더욱 향상 시키겠습니다 . 비디오 위에 오버레이로 텍스트를 추가 할 수 있습니다.

선택 윤곽 생성 및 구축

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

설정 윤곽

이제 marquee 방법을 사용하여 다음 구문을 사용하여 애플리케이션에서 비디오에 marquee를 쉽게 설정할 수 있습니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

로고 지원으로 vlcj-Marquee 챕터를 업데이트 할 응용 프로그램을 더욱 향상 시키겠습니다 . 비디오 위에 오버레이로 텍스트를 추가 할 수 있습니다.

로고 생성 및 구축

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

로고 설정

이제 로고 방법을 사용하여 다음 구문을 사용하여 응용 프로그램에서 비디오에 로고를 쉽게 설정할 수 있습니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

미디어 정보를 지원하는 vlcj-로고 챕터를 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

mediaPlayer를 사용하여 미디어 구문 분석

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

구문 분석 이벤트 처리

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

그리고 다음과 같은 메시지가 표시됩니다.

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]

전체 화면 재생을 지원하는 vlcj-미디어 정보 장을 업데이트 할 응용 프로그램을 더욱 향상 시키겠습니다 .

전체 화면 전략 첨부

Linux 용 기본 전체 화면 전략 인 XFullScreenStrategy와 Windows 용 기본 전체 화면 전략 인 Win32FullScreenStrategy를 내부적으로 사용하는 AdaptiveFullScreenStrategy를 사용하고 있습니다.

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

전체 화면 모드 전환

다음 코드는 전체 화면 모드를 전환합니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 전체 화면 버튼을 클릭하고 전체 화면으로 비디오를보십시오.

오디오 이퀄라이저 지원으로 vlcj-전체 화면 비디오 챕터를 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

오디오 이퀄라이저 만들기

MediaPlayerFactory 인스턴스를 사용하여 모든 값이 0 인 이퀄라이저를 만들 수 있습니다.

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

미리 설정된 이퀄라이저 값 가져 오기

다음 코드는 Flat, Classical, Club, Dance, Headphones 등과 같은 사전 설정된 이퀄라이저 이름을 가져옵니다.

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

미리 설정된 이퀄라이저를 사용하십시오.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 이퀄라이저 버튼을 클릭하고 다음과 같이 콘솔에서 이퀄라이저 세부 정보를 확인하십시오.

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

오버레이 지원으로 vlcj-오디오 이퀄라이저 챕터를 업데이트 할 응용 프로그램을 더욱 향상시켜 보겠습니다 .

오버레이 만들기

오버레이를 동영상 위에 표시 할 스윙 창으로 만들 수 있습니다.

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

오버레이 생성 및 설정

다음 코드는 미디어에 대한 오버레이를 설정합니다.

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

주문형 오버레이를 활성화 / 비활성화합니다.

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

Eclipse의 Environment Setup 장에서 만든대로 프로젝트 mediaPlayer를 엽니 다 .

다음 코드로 App.java 업데이트

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

파일을 마우스 오른쪽 단추로 클릭하여 애플리케이션을 실행하고 Java 애플리케이션으로 실행을 선택하십시오. 성공적으로 시작한 후 모든 것이 정상이면 다음 결과가 표시됩니다.

이제 Toggle Overlay Button을 클릭하고 다음과 같이 비디오 위에 오버레이 텍스트를 확인합니다.