vlcj - Hızlı Kılavuz
Vlcj, Java tabanlı bir uygulama içinde VLC oynatıcısını çalıştırmaya yardımcı olan bir Açık Kaynak projesidir. Sisteme yüklenen VLC oynatıcıyı keşfetme ve Java kullanarak bir medya oynatıcı istemcisi ve sunucu yazılımı oluşturmak için onu bağlama seçeneği sunar.
Java'yı kullanarak, yerel bir medya dosyalarını oynatabilir ve hatta isteğe bağlı video akış sunucusu oluşturabilirsiniz.
Kullanım
vlcj oldukça popüler bir java tabanlı kütüphanedir ve oşinografik araştırma gemileri ve ısmarlama IPTV ve ev sineması çözümleri gibi çeşitli java tabanlı yazılımlarda kullanılmaktadır. Ünlü örneklerden bazıları Elphel'deki Açık Kaynak video kamera ve Açık Sokak Haritası projesi için video haritalamadır.
Sözdizimi
EmbeddedMediaPlayerComponent Bileşeni Oluşturun
EmbeddedMediaPlayerComponent mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
Videoyu oynatın
Bir videoyu oynatmak çok kolaydır. Dosyanın yolunu iletin ve videoyu oynatır.
//pass path to media file
mediaPlayerComponent.mediaPlayer().media().play(path);
VLC Oynatıcı
VLC Media Player çok popüler bir medya oynatıcıdır ve Linux, MacOS ve Windows için mevcuttur. Harici ortam codec bileşenini yüklemeye gerek kalmadan her tür ortamı oynatmak için tonlarca codec bileşeniyle birlikte gelir. Ayrıca, ağlar arasında video akışını destekler ve medyanın kod dönüştürülmesine izin verir. VLC medya oynatıcıyı kullanarak yerel medya dosyalarını, yerel ağ akışlarını, internet tabanlı video akışlarını, DVD, Bluray, web kamerası, dijital video ve daha fazlasını oynatabiliriz.
VLC Media player yerel platform kodunda derlenmiştir ve doğrudan Java programları tarafından kullanılamaz. Bu sorunun üstesinden gelmek için VLC Media Player, LibVLC adı verilen yerel bir API (Uygulama Programlama Arayüzü) sağlar ve VLC Media Player'ın bir parçasıdır. vlcj daha sonra LibVLC kullanarak VLC Media Player ile etkileşim için gereken java katmanını sağlar.
vlcj Özellikleri
vlcj olgun bir kitaplıktır. VLC media player ile çalışırken gerekli olan aşağıdaki özellikleri sağlar.
Java Bindings - vlcj, Java programlamasını kullanarak bir Media Player işlevini programlayabilmemiz için VLC Media Player'ın tüm yerel işlemlerine Java bağlantısı sağlar.
Framework - vlcj, LibVLC için basit bir yüksek seviyeli programlama arayüzü sağlayarak herhangi bir platforma özgü davranış ve yerel kod işlemeyi kapsayan bir çerçeve görevi görür.
Robust- vlcj, LibVLC API'lerinin doğru kullanımını sağlar. Yanlış kullanım çökmelere veya kilitlenmelere neden olabilir.
Handles Asynchronous native events- vlcj, eşzamansız yerel olaylar için geri aramaları kaydeder ve bunlar daha sonra java dinleyici modelinde kolayca işlenebilir. Bu programlama modeli, kilitlenmeleri önlemeye yardımcı olur.
vlcj Uygulamaları
Aşağıda, vlcj'nin kullanılabileceği birkaç örnek verilmiştir.
Java Based - Java tabanlı olarak swing, awt, swt, javafx ve openGL programları içerisinde medya oynatıcı oluşturabiliyoruz.
IDE - Eclipse / NetBeans tabanlı Zengin İstemci Platformu Uygulamaları, medya tabanlı uygulamalar için vlcj kullanabilir.
Internet Radio Player - vlcj kullanarak, internet tabanlı radyoları yayınlayabilen bir ses oynatıcı oluşturabiliriz.
YouTube Player - vlcj kullanarak, YouTube videolarını yayınlayabilen bir YouTube oynatıcısı oluşturabiliriz.
Transcoder - vlcj kullanarak herhangi bir videoyu dönüştürebiliriz.
Network streaming server - vlcj kullanarak, isteğe bağlı bir video sunucusu oluşturabiliriz.
Network streaming client - vlcj kullanarak, istek üzerine video istemcisi oluşturabiliriz.
Video Playing Applet - vlcj kullanarak, videoyu oynatabilen bir uygulama oluşturabiliriz.
WebCam - vlcj kullanarak webcam uygulaması oluşturabiliriz.
CCTV Camera - vlcj kullanarak CCTV kameralarla kaydedilen videoları oynatan CCTV kamera uygulaması oluşturabiliriz.
Lisans
vlcj, GPL lisans koşulları altında dağıtılabilir . GPL lisansı koşulları olmadan ticari kullanım durumunda Caprica Software Limited ekibiyle iletişime geçin .
vlcj, Java tabanlı bir kitaplıktır, bu nedenle ilk gereksinim, makinenize JDK'nın yüklenmiş olmasıdır.
Adım 1 - Java Geliştirme Kitini (JDK) Kurun
En son SDK sürümünü Oracle'ın Java sitesinden indirebilirsiniz - Java SE İndirmeleri. İndirilen dosyalara JDK kurulumu için talimatlar bulacaksınız, kurulumu kurmak ve yapılandırmak için verilen talimatları izleyin. Son olarak, PATH ve JAVA_HOME ortam değişkenlerini java ve javac içeren dizine başvuracak şekilde ayarlayın, tipik olarak sırasıyla java_install_dir / bin ve java_install_dir.
Windows çalıştırıyorsanız ve JDK'yi C: \ jdk1.6.0_15'e yüklediyseniz, aşağıdaki satırı C: \ autoexec.bat dosyanıza koymanız gerekir.
set PATH=C:\jdk1.6.0_15\bin;%PATH%
set JAVA_HOME=C:\jdk1.6.0_15
Alternatif olarak, Windows NT / 2000 / XP'de Bilgisayarım'a sağ tıklamanız, Özellikler → Gelişmiş → Ortam Değişkenleri'ni seçmeniz gerekecektir. Ardından, PATH değerini güncellemeniz ve OK düğmesine tıklamanız gerekecektir.
Unix'te (Solaris, Linux, vb.), SDK /usr/local/jdk1.6.0_15'e kuruluysa ve C kabuğunu kullanıyorsanız, aşağıdakileri .cshrc dosyanıza koymanız gerekecektir.
setenv PATH /usr/local/jdk1.6.0_15/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.6.0_15
Alternatif olarak, Borland JBuilder, Eclipse, IntelliJ IDEA veya Sun ONE Studio gibi bir Entegre Geliştirme Ortamı (IDE) kullanıyorsanız, IDE'nin Java'yı nereye yüklediğinizi bildiğini doğrulamak için basit bir program derlemeniz ve çalıştırmanız gerekecektir. Aksi takdirde, IDE belgesinde verildiği gibi uygun bir kurulum yapmanız gerekecektir.
Adım 2 - Bağımlılıklar ile birlikte vlcj kitaplığını kurun
Aşağıdaki kavanozları MVNRepository'den indirin ve sınıf yolunuzda kullanın.
- vlc-4.4.4.jar
- vlc-natives-4.1.0.jar
- jna-5.2.0.jar
- jna-platform-5.2.0.jar
Bu dizinde CLASSPATH değişkeninizi doğru bir şekilde ayarladığınızdan emin olun, aksi takdirde uygulamanızı çalıştırırken bir sorunla karşılaşacaksınız.
Adım 3 - Eclipse IDE'yi Kurun
Bu eğitimdeki tüm örnekler Eclipse IDE kullanılarak yazılmıştır. Bu nedenle, makinenize Eclipse'in en son sürümünü yüklemenizi öneririz.
Eclipse IDE'yi yüklemek için, en son Eclipse ikili dosyalarını indirin https://www.eclipse.org/downloads/. Kurulumu indirdikten sonra, ikili dağıtımı uygun bir konuma açın. Örneğin, Windows'ta C: \ eclipse'de veya Linux / Unix'te / usr / local / eclipse'de ve son olarak PATH değişkenini uygun şekilde ayarlayın.
Eclipse, Windows makinesinde aşağıdaki komutları çalıştırarak başlatılabilir veya eclipse.exe dosyasına çift tıklayabilirsiniz.
%C:\eclipse\eclipse.exe
Eclipse, Unix (Solaris, Linux, vb.) Makinesinde aşağıdaki komutlar çalıştırılarak başlatılabilir -
$/usr/local/eclipse/eclipse
Adım 4 - Bir Maven Projesi Oluşturun
C:\MVN>mvn archetype:generate
-DgroupId = com.tutorialspoint.media
-DartifactId = mediaPlayer
-DarchetypeArtifactId = maven-archetype-quickstart
-DinteractiveMode = false
Bir maven projesi yaratacak. Şimdi pom.xml dosyasını aşağıdaki gibi güncelleyin -
<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 bağımlılıklarını güncellemek ve proje oluşturmak için follwing komutunu çalıştırın.
mvn package
Komut başarılı olduğunda. Maven tabanlı medya oynatıcı projesini Eclipse'de bir maven projesi olarak içe aktarın. Rest Eclipse halledecek.
Adım 5 - VLC Player'ı Kurun
VLC Player'ın en son sürümünü ana sayfasındaki VLC media player'dan indirin ve yükleyicisini kullanarak yükleyin. vlcj 4.4 kitaplığı önkoşul olarak VLC 3.0 sonrası ve Java 8 gerektirir.
VLC Player Keşfi
vlcj kitaplığı, aşağıdaki sözdizimini kullanarak sistemde kurulu VLC oynatıcısının otomatik keşfini yapan bir sınıf sağlar.
EmbeddedMediaPlayerComponent mediaPlayerComponent = = new EmbeddedMediaPlayerComponent();
Video Yükle
Artık medyayı kullanarak aşağıdaki sözdizimini kullanarak uygulamamıza kolayca bir video yükleyebiliriz
mediaPlayerComponent.mediaPlayer().media().startPaused(path);
Video oynatmak
Şimdi kontrolleri kullanarak aşağıdaki sözdizimini kullanarak uygulamamızda bir videoyu kolayca oynatabiliriz
mediaPlayerComponent.mediaPlayer().controls().play();
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Oynat Düğmesine tıklayın ve video oynamaya başlayacaktır.
Vlcj Video Oynatma bölümünü video duraklatma özelliğiyle güncelleyeceğimiz uygulamayı daha da geliştirelim.
Videoyu Duraklat
Şimdi kontrolleri kullanarak aşağıdaki sözdizimini kullanarak uygulamamızdaki bir videoyu kolayca duraklatabiliriz
mediaPlayerComponent.mediaPlayer().controls().pause();
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Oynat Düğmesine tıklayın ve video oynamaya başlayacak, ardından duraklat düğmesine tıklayın. Şimdi video duraklatılacak.
Misal
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Artık bir videoyu oynatabilir, duraklatabilir ve geri sarabilirsiniz.
Vlcj Videoyu Duraklatma bölümünü Seek video özelliği ile güncelleyeceğimiz uygulamayı daha da geliştirelim.
Video Ara
Şimdi kontrolleri kullanarak aşağıdaki sözdizimini kullanarak uygulamamızdaki bir videoyu kolayca geri sarabiliriz -
mediaPlayerComponent.mediaPlayer().controls().skipWhile(10000);
Burada videoyu geri sarmak için pozitif bir değer (ileriye doğru uzunluk) geçiriyoruz.
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Artık videoyu oynatabilir, duraklatabilir, geri sarabilir ve atlayabilirsiniz.
Vlcj Seek Video bölümünü oynatma olayları yeteneğiyle güncelleyeceğimiz uygulamayı daha da geliştirelim.
Oyun Oynama Olayını Yönetme
Aşağıdaki sözdizimini kullanarak oyun olay işleyicisi ekleyin (Şablon yöntemi) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void playing(MediaPlayer mediaPlayer) {
}
};
Ya da aşağıdaki sözdizimini kullanarak olay işleyicisi ekleyebiliriz (Dinleyici yöntemi) -
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void playing(MediaPlayer mediaPlayer) {
}
});
Bir video oynatıldığında oynatma olayı ortaya çıkar.
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Artık konsol günlüğünde video yüklenirken aşağıdaki gibi bir mesaj gösterdiğini görebilirsiniz−
Media Playback started.
Şimdi çeşitli düğmelere tıklayın. Oynat düğmesine tıkladığınızda, konsolda yukarıdaki mesaj görünecektir.
Vlcj - Video Olayı Oynatma bölümünü tamamlanmış olay kabiliyetiyle birlikte güncelleyeceğimiz uygulamayı daha da geliştirelim.
Bitmiş Olayı İşleme
Aşağıdaki sözdizimini kullanarak tamamlanmış olay işleyicisini ekleyin (Şablon yöntemi) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void finished(MediaPlayer mediaPlayer) {
}
};
Veya aşağıdaki sözdizimini kullanarak tamamlanmış olay işleyicisi ekleyebiliriz (Dinleyici yöntemi) -
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void finished(MediaPlayer mediaPlayer) {
}
});
Bir video tamamen oynatıldığında bitmiş olay ortaya çıkar.
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi videoyu oynatın ve bitene kadar bekleyin, ardından aşağıdaki gibi bir mesaj gösterir−
Media Playback finished.
Vlcj - Bitmiş Video Olayı bölümünü hata işleme özelliğiyle güncelleyeceğimiz uygulamayı daha da geliştirelim.
Hata Olayını İşleme
Aşağıdaki sözdizimini kullanarak hata olayı işleyicisi ekleyin (Şablon yöntemi) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void error(MediaPlayer mediaPlayer) {
}
};
Veya aşağıdaki sözdizimini kullanarak hata olay işleyicisi ekleyebiliriz (Dinleyici yöntemi) -
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void error(MediaPlayer mediaPlayer) {
}
});
Bir video yüklenemediğinde, hata olayı başlatılır. Ancak oynatma yöntemi hemen geri döndüğünde ve daha sonra hata olayı ortaya çıkar (videonun yüklenmesi ve çalıştırılamaması durumunda). Bu nedenle, hata olayını eşzamansız bir şekilde ele almalıyız.
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Burada, medya dosyasına giden geçersiz bir yol sağlanır. Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi konsolda aşağıdaki gibi bir mesaj göreceksiniz−
Failed to load Media.
Vlcj'yi güncelleyeceğimiz uygulamayı daha da geliştirelim - Fare olaylarını işleme özelliğine sahip Video Olayı bölümü yüklenirken hata oluştu .
Fare Olaylarını Yönetme
Aşağıdaki sözdizimini kullanarak fare olay işleyicileri ekleyin (Şablon yöntemi) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void mouseClicked(MouseEvent e) {
}
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
}
};
Veya aşağıdaki sözdizimini kullanarak fare olay işleyicisi ekleyebiliriz (Dinleyici yöntemi) -
Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();
videoSurface.addMouseListener(new MouseAdapter() {
@Override
public void mouseClicked(MouseEvent e) {
}
});
videoSurface.addMouseWheelListener(new MouseWheelListener() {
@Override
public void mouseWheelMoved(MouseWheelEvent e) {
}
});
Windows'ta Listener yöntemi olması durumunda, aşağıdaki sözdizimini kullanarak yerel fare giriş işlemesini devre dışı bırakmamız gerekir.
mediaPlayerComponent.mediaPlayer().input().enableMouseInputHandling(false);
Bir video yüzeyinde fareyi kullandığımızda, fare olayı ortaya çıkacaktır.
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi videonun içine tıklayın ve konsolda aşağıdaki gibi bir mesaj göreceksiniz−
Media Playback started.
Media Playback started.
Mouse Clicked. (377,180)
Mouse Clicked. (377,180)
Mouse Clicked. (356,120)
Media Playback finished.
Vlcj - Fare Olayını İşleme bölümünü Klavye olaylarını işleme özelliğiyle güncelleyeceğimiz uygulamayı daha da geliştirelim.
Klavye Olaylarını Yönetme
Aşağıdaki sözdizimini kullanarak fare olay işleyicileri ekleyin (Şablon yöntemi) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void keyPressed(KeyEvent e) {
}
};
Veya aşağıdaki sözdizimini kullanarak klavye olay işleyicisi ekleyebiliriz (Dinleyici yöntemi) -
Component videoSurface = mediaPlayerComponent.videoSurfaceComponent();
videoSurface.addKeyListener(new KeyAdapter() {
@Override
public void keyPressed(KeyEvent e) {
}
});
Windows'ta Listener yöntemi olması durumunda, aşağıdaki sözdizimini kullanarak yerel klavye giriş işlemeyi devre dışı bırakmamız gerekir.
mediaPlayerComponent.mediaPlayer().input().enableKeyInputHandling(false);
Herhangi bir tuşa bastığımızda klavye olayı ortaya çıkacaktır.
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi herhangi bir tuşa basın ve konsolda aşağıdaki gibi mesajlar göreceksiniz -
Media Playback started.
Media Playback started.
Mouse Clicked. (345,231)
Key pressed. 82
Media Playback finished.
Key pressed. 82
Vlcj - Klavye Olaylarını İşleme bölümünü Ses Çalma özelliği ile güncelleyeceğimiz uygulamayı daha da geliştirelim. Video Oynatma'ya benzer şekilde, bir Ses oynatmayı da kolay bir şekilde kontrol edebiliriz.
Bir Ses Oynatıcı Oluşturun
AudioPlayerComponent audioPlayerComponent = new AudioPlayerComponent();
Ses Yükle
Artık medyayı kullanarak, aşağıdaki sözdizimini kullanarak uygulamamıza kolayca bir ses yükleyebiliriz−
audioPlayerComponent.mediaPlayer().media().startPaused(path);
Ses Çal
Şimdi kontrolleri kullanarak, aşağıdaki sözdizimini kullanarak uygulamamızda bir ses klibini kolayca oynatabiliriz -
audioPlayerComponent.mediaPlayer().controls().play();
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi Ses Kontrollerinde oynat düğmesine basın ve bir klip oynamaya başlayacaktır. Duraklat düğmesine tıklamak sesi duraklatacaktır.
Vlcj - Audio Player bölümünü Marquee desteğiyle güncelleyeceğimiz uygulamayı daha da geliştirelim . Videonun üzerine kaplama olarak bir metin ekleyebiliriz.
Bir seçim çerçevesi oluşturun ve oluşturun
Marquee marquee = Marquee.marquee()
.text("TutorialsPoint")
.size(40)
.colour(Color.WHITE)
.position(MarqueePosition.BOTTOM_RIGHT)
.opacity(0.5f)
.enable();
Seçim Çerçevesini Ayarla
Şimdi kayan yazı yöntemini kullanarak, aşağıdaki sözdizimini kullanarak uygulamamızdaki videomuzda kolayca bir kayan yazı oluşturabiliriz -
mediaPlayerComponent.mediaPlayer().marquee().set(marquee);
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Vlcj - Marquee bölümünü Logo desteğiyle güncelleyeceğimiz uygulamayı daha da geliştirelim . Videonun üzerine kaplama olarak bir metin ekleyebiliriz.
Bir logo oluşturun ve oluşturun
Logo logo = Logo.logo()
.file(LOGO_PATH)
.position(LogoPosition.TOP_LEFT)
.opacity(0.3f)
.enable();
Logoyu Ayarla
Artık logo yöntemini kullanarak uygulamamızda aşağıdaki sözdizimini kullanarak videomuza kolayca bir logo yerleştirebiliriz−
mediaPlayerComponent.mediaPlayer().logo().set(logo);
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Vlcj - Logo bölümünü Media Information desteği ile güncelleyeceğimiz uygulamayı daha da geliştirelim .
MediaPlayer kullanarak Ortamı ayrıştırma
mediaPlayerComponent.mediaPlayer().media().parsing().parse();
Ayrıştırma Olayını Yönet
mediaPlayerComponent.mediaPlayer().events().addMediaEventListener(new MediaEventAdapter() {
@Override
public void mediaParsedChanged(Media media, MediaParsedStatus newStatus) {
}
}
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Ve mesajları aşağıdaki gibi gösterecektir−
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]
Tam Ekran oynatma desteğiyle vlcj - Medya Bilgileri bölümünü güncelleyeceğimiz uygulamayı daha da geliştirelim .
Tam ekran stratejisi ekleyin
Linux için yerel bir tam ekran stratejisi olan XFullScreenStrategy'yi ve Windows için yerel bir tam ekran stratejisi olan Win32FullScreenStrategy'yi dahili olarak kullanan AdaptiveFullScreenStrategy'yi kullanıyoruz.
mediaPlayerComponent.mediaPlayer().fullScreen().strategy(
new AdaptiveFullScreenStrategy(this));
Tam Ekran Modunu Değiştir
Aşağıdaki kod, tam ekran modunu değiştirir.
mediaPlayerComponent.mediaPlayer().fullScreen().toggle();
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi Tam Ekran Düğmesine tıklayın ve videoyu tam ekran görün.
Vlcj - Tam Ekran Video bölümünü bir ses ekolayzer desteği ile güncelleyeceğimiz uygulamayı daha da geliştirelim .
Bir ses ekolayzer oluştur
MediaPlayerFactory örneğini kullanarak tüm değerleri sıfır olarak içeren bir ekolayzer oluşturabiliriz.
Equalizer equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer();
Önceden ayarlanmış ekolayzer değerlerini alın
Aşağıdaki kod önceden ayarlanmış ekolayzer adlarını alın, örneğin Düz, Klasik, Kulüp, Dans, Kulaklıklar vb.
List<String> presetNames = factory.equalizer().presets();
Ön ayarlı ekolayzırı kullanın.
Equalizer equalizer = mediaPlayerComponent.mediaPlayerFactory().equalizer().newEqualizer(presetName);
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi Ekolayzer Düğmesine tıklayın ve konsolda ekolayzer ayrıntılarını aşağıdaki gibi görün.
[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 - Audio Equalizer bölümünü bir kaplama desteği ile güncelleyeceğimiz uygulamayı daha da geliştirelim .
Yer Paylaşımı Oluşturun
Bir videonun üzerinde gösterilmek üzere hareketli pencere olarak bir kaplama oluşturabiliriz.
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);
}
}
Kaplama Oluşturun ve Ayarlayın
Aşağıdaki kod, medya için yer paylaşımını ayarlar.
Overlay overlay = new Overlay(this);
mediaPlayerComponent.mediaPlayer().overlay().set(overlay);
Yerleşimi isteğe bağlı olarak etkinleştirin / devre dışı bırakın.
mediaPlayerComponent.mediaPlayer().overlay().enable(overlayEnabled);
Misal
Eclipse'de Ortam Kurulumu bölümünde oluşturulan proje mediaPlayer'ı açın .
App.java'yı aşağıdaki kodla güncelleyin−
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);
}
}
Dosyaya sağ tıklayarak uygulamayı çalıştırın ve Java Uygulaması olarak çalıştır'ı seçin. Başarılı bir başlangıçtan sonra, her şey yolundaysa, aşağıdaki sonucu göstermelidir -
Şimdi Yer Paylaşımı Düğmesine tıklayın ve aşağıdaki gibi Video üzerindeki kaplama metnini görün.