Putar media menggunakan perpustakaan VLCj

Latar belakang


(Anda dapat langsung melompat dan pergi ke item berikutnya)

Saat belajar Java, segera setelah saya menguasai Swing, menjadi menarik, "Tapi bagaimana cara memutar audio atau video?". Saya mencari-cari di Google untuk waktu yang lama, menggali beberapa perpustakaan di sana yang, secara teori, harus memberi saya apa yang saya inginkan. Tetapi seperti yang telah ditunjukkan oleh praktik, sebagian besar perpustakaan ini membaca sejumlah kecil format dan tidak terlalu nyaman untuk digunakan. Masih mencari-cari selama beberapa hari, saya akhirnya menemukan sesuatu yang secara teori seharusnya membantu saya dengan solusi masalah. Perpustakaan VLCj mengambil codec dari pemutar media VLC dan memainkan file dengannya. Hari lain menderita dengan tutorial di situs web resmi dan akhirnya berhasil mulai memutar file video di JFrame.

Mari kita beralih ke bisnis:


1. Unduh perpustakaan itu sendiri (lebih baik untuk mengambil versi terbaru, karena memiliki masalah kompatibilitas) tautan

2. Jika Anda belum menginstal pemutar media VLC, maka Anda harus mengunduh dan menginstalnya. Anda dapat mengunduhnya di situs web VideoLan resmi (lebih baik mengambil versi terbaru, mengandung lebih banyak codec).

3. IDE, saya menggunakan Eclipse.

Pertama, buat proyek baru dan beri nama, misalnya, "MediaPlayer".

Sekarang buka folder MediaPlayer di eclipse-workspace Anda, dan unzip arsip yang diunduh dengan perpustakaan ke folder ini.

Lebih lanjut dalam Eclipse, dalam pengaturan proyek Anda, klik "Tambahkan JAR Eksternal" dan di jendela yang terbuka, temukan dan pilih file vlcj-3.0.1.jar. Pilih DIA DAN DIA SAJA .

Jadi, perpustakaan itu terhubung ke proyek. Selanjutnya kita perlu membuat instance kelas. Misalnya, buat Test.java (saya harap proses ini tidak perlu dijelaskan kepada siapa pun).

Kami mendapat kelas kosong dengan kira-kira konten berikut:

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

Selanjutnya, kita perlu membuat JFrame di mana kita ingin menampilkan video kita. Kami juga membuat JPanel dan meletakkan Kanvas di dalamnya, yang kami gunakan sebagai permukaan untuk pemutar video kami.

 public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); } } 

Jadi, bagian visualnya sudah siap. Selanjutnya, kita beralih langsung ke perpustakaan dan pemutar VLC. Dan benar-benar membuat pemain itu sendiri di bingkai kami.

 NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files\VideoLAN\VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); 

Di sini kami menunjukkan jalur ke VLC player (lebih khusus, file libvlc.dll, libvlccore.dll dan folder plugins). Kami membuat pemutar media tingkat lanjut (memiliki kemampuan lebih dari sekadar "pemutar media"), memberinya permukaan, menunjukkan jalur ke file video, menyiapkan file untuk diputar, dan benar-benar memutarnya.

Akibatnya, kode Anda akan terlihat seperti ini:

 import java.awt.BorderLayout; import java.awt.Canvas; import java.awt.Color; import javax.swing.JFrame; import javax.swing.JPanel; import com.sun.jna.Native; import com.sun.jna.NativeLibrary; import uk.co.caprica.vlcj.binding.LibVlc; import uk.co.caprica.vlcj.player.MediaPlayerFactory; import uk.co.caprica.vlcj.player.embedded.EmbeddedMediaPlayer; import uk.co.caprica.vlcj.player.embedded.windows.Win32FullScreenStrategy; import uk.co.caprica.vlcj.runtime.RuntimeUtil; public class Test { public static void main(String[] args) { JFrame f=new JFrame(); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); f.setVisible(true); f.setBounds(100,100,1000,600); Canvas c=new Canvas(); c.setBackground(Color.black); JPanel p=new JPanel(); p.setLayout(new BorderLayout()); p.add(c); f.add(p); NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "C:\\Program Files/VideoLAN/VLC"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); MediaPlayerFactory mpf= new MediaPlayerFactory(); EmbeddedMediaPlayer emp= mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(f)); emp.setVideoSurface(mpf.newVideoSurface(c)); emp.setEnableMouseInputHandling(false); emp.setEnableKeyInputHandling(false); String file="C:\\Users\Admin\eclipse-workspace\MediaPlayer/video.avi"; emp.prepareMedia(file); emp.play(); } } 

Ingatlah bahwa:
- Jalur Anda ke pemutar media VLC mungkin berbeda.
- Jalur ke video Anda dapat bervariasi.

Untuk kenyamanan, Anda dapat menyalin file yang diperlukan dari pemutar media VLC ke proyek Anda. Ini juga menghilangkan kebutuhan untuk menginstal VLC pada komputer tempat program Anda akan bekerja.

Pada awalnya, saya mengalami kesulitan memutar file yang memiliki Cyrillic dalam nama atau path. Jika Anda mengalami kesulitan yang sama, klik kanan instance kelas Anda dan masuk ke pengaturannya dan ubah penyandiannya ke UTF-8

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


All Articles