首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在JPanel上播放mp4视频?

如何在JPanel上播放mp4视频?
EN

Stack Overflow用户
提问于 2013-11-27 22:47:03
回答 1查看 4.9K关注 0票数 1

我正在使用徐歌库在JPanel上播放mp4视频,但是视频加载需要3秒。或者更多。你有什么建议如何在JPanel或JLabel上以正确的方式播放视频吗?

这是一个显示mp4视频的好方法吗?VideoCodec是一个徐哥尔编解码器。这是工作,但我有几秒钟的延迟。

代码语言:javascript
复制
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();
}
EN

回答 1

Stack Overflow用户

发布于 2013-12-06 22:30:52

我找到了一个解决方案。VLCJ库和EmbeddedMediaPlayer。播放视频/图像的代码很简单:

代码语言:javascript
复制
public class ExamQuestionsLeftPanel extends JPanel {
private EmbeddedMediaPlayerComponent component;
private EmbeddedMediaPlayer player;

..。

代码语言:javascript
复制
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);
}

..。

代码语言:javascript
复制
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();
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20245494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档