How to play mp4 video on JPanel?

非 Y 不嫁゛ 提交于 2019-12-24 13:47:55

问题


I am using the Xuggle library to play mp4 videos on a JPanel but video loading is taking 3 sec. or more. Do you have some advice how to play video on JPanel or JLabel in the right way?

Is this a good way to show mp4 video? VideoCodec is a Xuggle Codec. This is working but I have a delay of a few seconds.

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:


I found a solution. VLCJ library and EmbeddedMediaPlayer. Code to play video/ image is simple:

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


来源:https://stackoverflow.com/questions/20245494/how-to-play-mp4-video-on-jpanel

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!