2012-07-12 8 views
0

다음 코드VLCJ : 비디오가

import com.sun.jna.Native; 
import uk.co.caprica.vlcj.binding.LibVlc; 
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent; 
import uk.co.caprica.vlcj.runtime.RuntimeUtil; 

import com.sun.jna.NativeLibrary; 
import javax.swing.JFrame; 
import javax.swing.SwingUtilities; 
import javax.swing.*; 
import java.awt.*; 
import java.awt.event.*; 
import javax.media.bean.playerbean.MediaPlayer; 
import uk.co.caprica.vlcj.player.MediaPlayerEventAdapter; 
import uk.co.caprica.vlcj.player.MediaPlayerEventListener; 

public class PlayMedia extends JFrame 
{ 
    private EmbeddedMediaPlayerComponent m; 
    private JProgressBar bar; 

    public PlayMedia() 
    { 

     NativeLibrary.addSearchPath(
     RuntimeUtil.getLibVlcLibraryName(), "c:\\program files\\videolan\\vlc" 
    ); 
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); 


     m = new EmbeddedMediaPlayerComponent(); 
     m.getMediaPlayer().addMediaPlayerEventListener(new UpdateBar()); 

     bar = new JProgressBar(0,100); 
     bar.setStringPainted(true); 

     getContentPane().add(m); 
     getContentPane().add(bar,"South"); 


     this.setSize(500,500); 
     this.validate(); 
     this.setLocationRelativeTo(null); 

     this.setVisible(true); 
     this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 


     m.getMediaPlayer().playMedia("C:\\Users\\Yohan\\Desktop\\video.avi"); 

    } 

    private class UpdateBar extends MediaPlayerEventAdapter 
    { 
     public void positionChanged(MediaPlayer mp, float pos) 
     { 
      int value = Math.min(100, Math.round(pos * 100.0f)); 
      bar.setValue(value); 
     } 
    } 

    public static void main(String[]args) 
    { 


      SwingUtilities.invokeLater(new Runnable() 
      { 
      @Override 
       public void run() 
       { 
        new PlayMedia(); 
       } 
      }); 


    } 
} 
여기에서

, 비디오 잘 재생에서 참조하시기 바랍니다 진행하지만, 진행 표시 줄이 업데이트 점점되지 않는 진행 표시 줄을 업데이트. 비디오가 재생 될 때 진행률 막대를 업데이트하는 방법? 도와주세요!

답변

0

저는 스윙에서 ProgressBars를 사용하지 않았지만 실버 라이트에서 사용 했으므로 대부분의 원리는 같을 것이라고 생각합니다. 내 질문에 대한 대답을 여기에서 확인하십시오. How do I make a Silverlight Progressbar update according to its value? 정확히 스윙에서이 작업을 수행하는 방법을 보여주지는 못하지만 코드에서 스레딩을 사용하고있는 것처럼 보이지는 않습니다. 이것이 내 문제입니다.

0

알 수없는 이유로 비디오 중에 positionChanged()가 호출되지 않았습니다. timeChanged() istead를 사용하려고하면 저에게 효과적입니다!

public void positionChanged (MediaPlayer mediaPlayer , long time) { 



      } 
관련 문제