I got some troubles on making my jslider run synchronize with the video i played. Here is my sample codes.
public Test() { NativeLibrary.addSearchPath( RuntimeUtil.getLibVlcLibraryName(), "lib"); Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); mediaPlayer = new EmbeddedMediaPlayerComponent(); p2.setLayout(newBorderLayout()); p2.setComponentOrientation(ComponentOrientation.LEFT_TO_RIGHT); b2.setIcon(new ImageIcon("pause.png")); b2.revalidate(); b3.setIcon(new ImageIcon("skip.png")); b3.revalidate(); b3.repaint(); p2.add(mediaPlayer); mediaPlayer.getMediaPlayer().playMedia("intranet.mp4"); slider.setValue((int) mediaPlayer.getMediaPlayer().getLength()); }
Then, on my buttons here is my sample code..
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
int time = (int) mediaPlayer.getMediaPlayer().getLength();
JOptionPane.showMessageDialog(null,time);
}
private void sliderStateChanged(javax.swing.event.ChangeEvent evt) {
label1.setText("Value" + slider.getValue());
}
private void b3ActionPerformed(java.awt.event.ActionEvent evt) {
mediaPlayer.getMediaPlayer().skip(10000);
JOptionPane.showMessageDialog(null, mediaPlayer.getMediaPlayer().getLength());
}
private void b2ActionPerformed(java.awt.event.ActionEvent evt) {
mediaPlayer.getMediaPlayer().pause();
b2.removeAll();
}
private void b1ActionPerformed(java.awt.event.ActionEvent evt) {
mediaPlayer.getMediaPlayer().skip(-10000);
int time = (int) mediaPlayer.getMediaPlayer().getLength();
JOptionPane.showMessageDialog(null, mediaPlayer.getMediaPlayer().getLength());
}
My problem is that i can know whats the total time of the videos that i played and i don't have many ideas when the video is played then the slider too will run with its designated time. Thanks for the suggestions in advance, I'm looking forward to it!!
use overridden method: Timechanged and link it to jslider, each time the new instant video will be sent to change slider progress.
mediaplayer = new EmbeddedMediaPlayerComponent();
embededMediaPlayer = mediaplayer.getMediaPlayer();
embededMediaPlayer.setRepeat(true);
videoSurface = mediaplayer.getVideoSurface();
embededMediaPlayer.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {
/**
*
* @param mediaPlayer play video
* @param newTime get every millisecond changed in the mediaplayer
* when is in playing mode
*/
@Override
public void timeChanged(MediaPlayer mediaPlayer, long newTime) {
super.timeChanged(mediaPlayer, newTime);
// here put you code to set new slider progress value
}
});