vlcj - Kesalahan saat memuat Acara Video
Mari tingkatkan aplikasi lebih lanjut di mana kita akan memperbarui vlcj - Bab Acara Video Selesai dengan kemampuan penanganan kesalahan.
Penanganan Error Event
Tambahkan penangan peristiwa kesalahan menggunakan sintaks berikut (metode Template) -
mediaPlayerComponent = new EmbeddedMediaPlayerComponent() {
@Override
public void error(MediaPlayer mediaPlayer) {
}
};
Atau kita dapat menambahkan penangan kejadian kesalahan menggunakan sintaks berikut (metode Pendengar) -
mediaPlayerComponent.getMediaPlayer().addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
@Override
public void error(MediaPlayer mediaPlayer) {
}
});
Ketika video gagal dimuat maka peristiwa kesalahan dimunculkan. Tetapi karena metode putar segera kembali dan peristiwa kesalahan akan dimunculkan (jika video dimuat dan gagal dijalankan) nanti. Jadi kita harus menangani kejadian kesalahan dengan cara asynchronous.
Contoh
Buka proyek mediaPlayer seperti yang dibuat di bab Pengaturan Lingkungan di Eclipse.
Perbarui App.java dengan kode berikut−
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);
}
}
Di sini disediakan jalur yang tidak valid ke file media. Jalankan aplikasi dengan mengklik kanan file tersebut dan pilih run as Java Application. Setelah startup berhasil, jika semuanya baik-baik saja maka itu akan menampilkan hasil sebagai berikut -
Sekarang akan melihat pesan di konsol sebagai berikut-
Failed to load Media.