2017-01-11 2 views
0

jsliderの実行を私が再生したビデオと同期させるためにいくつかの問題があります。ここに私のサンプルコードです。vlcjフレームワークを使用してビデオのタイムラインになることができるJsliderを作成する方法

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

その後、私のボタンの上にここに私のサンプルコードは..です

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



} 

私の問題は私がドン果たしたと私のビデオのいただきました合計時間を知ることができるということですビデオが再生されるときに多くのアイデアを持っているし、スライダーも指定された時間で実行されます。事前に提案していただきありがとうございます、私はそれを楽しみにしています!

+0

ただ、注意してください、jVLCがビデオをレンダリングするために重いコンポーネントを使用して、彼らは常にたぶん、あなたは[PlayerControlsPanel](HTTPSを見ている必要がありJSlider' – MadProgrammer

+0

'のような軽量コンポーネントと素晴らしいプレーしていません://github.com/caprica/vlcj/blob/master/src/test/java/uk/co/caprica/vlcj/test/basic/PlayerControlsPanel.java)jVLCリポジトリから... – MadProgrammer

+0

私はすでにコードを参照しています、@MadProgrammerしかし、私はvlcjフレームワークのembeddedmediaplayerを使用しているため、いくつかの競合が発生します。メディアプレーヤーではありません。 – Jaym

答えて

0

オーバーライドされたメソッドを使用します。新しいインスタントビデオが送信されるたびに、スライダの進行状況を変更するたびに、タイムチェンジしてjsliderにリンクします。

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 
       } 
      }); 
関連する問題