2013-11-27 5 views
1

Xuggle 라이브러리를 사용하여 JPanel에서 mp4 비디오를 재생하고 있지만 비디오로드에는 3 초가 걸립니다. 이상. JPanel 또는 JLabel에서 올바른 방식으로 비디오를 재생하는 방법에 대한 조언이 있습니까?JPanel에서 mp4 비디오를 재생하는 방법?

mp4 비디오를 표시하는 좋은 방법입니까? VideoCodec은 Xuggle 코덱입니다. 이것은 작동하지만 몇 초의 지연이 있습니다.

public void setVideoName(final String videoName) { 
    imageAndVideoPanel.removeAll(); 
    final VideoPanel videoPanel = new VideoPanel(); 
    videoPanel.setPreferredSize(Const.Dimensions.VIDEO_SIZE); 
    videoPanel.setMinimumSize(Const.Dimensions.VIDEO_SIZE); 
    videoPanel.setMaximumSize(Const.Dimensions.VIDEO_SIZE); 
    imageAndVideoPanel.add(videoPanel); 

    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      VideoCodec videoCodec = 
        new VideoCodec(videoPanel, videoName + TextsDao.getText("videoFilesExtension")); 
     } 
    }).start(); 
} 
+1

당신은 3 초 부하가 느린 것을 어떻게 생각 하죠? 동영상의 크기는 얼마입니까? 어쨌든 여기 몇 가지 제안이 있습니다 http://stackoverflow.com/search?tab=relevance&q=play%20video%20swing – DSquare

+0

이것은 comercioanal 응용 프로그램이므로 더 나은 방법으로 수행되어야합니다. 3 초 내 PC에 (승리 8, 코어 i7)하지만 느린 PC에서 그것은 5 ~ 6 초. 비디오 - mp4 (5-10MB). 어쩌면 비디오를 보여주는 더 좋은 방법 일 수도 있습니다. 나는 그것을 발견 할 것이다. 감사. –

+0

해결책을 찾았습니다. VLCJ 라이브러리를 사용했고 비디오가 1 초 동안로드되었습니다. 감사 :) –

답변

2

솔루션을 찾았습니다. VLCJ 라이브러리 및 EmbeddedMediaPlayer. 코드가 비디오를 재생/이미지는 간단하다

public class ExamQuestionsLeftPanel extends JPanel { 
private EmbeddedMediaPlayerComponent component; 
private EmbeddedMediaPlayer player; 

은 ...

public ExamQuestionsLeftPanel() { 
    setUpPanel(); 
    initializeComponents(); 
} 

private void setUpPanel() { 
    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "VLCx86"); 
    component = new EmbeddedMediaPlayerComponent(); 
    player = component.getMediaPlayer(); 

    Border emptyBorder = BorderFactory.createEmptyBorder(10, 10, 10, 10); 

    setLayout(null); 
    setBackground(Const.Colors.EXAM_BACKGROUND_COLOR); 
    setAlignmentX(Component.LEFT_ALIGNMENT); 
    setBorder(emptyBorder); 
} 

은 ...

public void setImageName(String imageName) { 
    player.stop(); 
    player.prepareMedia("media" + File.separator + imageName); 
    player.parseMedia(); 
    player.play(); 
} 

public void setVideoName(final String videoTitle) { 
    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      player.stop(); 
      player.prepareMedia("media" + File.separator + videoTitle); 
      player.parseMedia(); 
      player.play(); 
     } 
    }).start(); 
} 
관련 문제