VLCJ MediaPlayerComponent在Linux/Ubuntu中移动JFrame时落后



我的代码需要支持使用Java 8的Windows和Linux(理想情况下也是Mac,但我知道如果我们使用较新的Java版本,VLCJ在Mac上运行会有一些问题)。这个滞后问题不会发生在Windows上,而是发生在Linux上(我使用的是Ubuntu 16.04 LTS)。我正在将MediaPlayerComponent设置为JFrame的内容窗格。当我拖动播放器(即JFrame)时,MediaPlayerComponent部分将继续在旧位置停留一秒钟左右,然后重新回到JFrame中。如果我在视频播放完毕后拖动播放器,MediaPlayerComponent 部分将不会回 JFrame,如果我在桌面上移动窗口,该窗口将位于 JFrame 和 MediaPlayerComponent 对象之间。媒体播放器组件与 JFrame 分离MediaPlayerComponet 和 JFrame 之间的 Web 浏览器三明治我的代码:

private void setUpPlayer(int x, int y, int width, int height) {     
    frame = new JFrame();
    frame.setBounds(x, y, width, height);
    frame.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
    frame.addWindowListener(new WindowAdapter() {
        @Override
        public void windowClosing(WindowEvent e) {
            mediaPlayerComponent.release();
            System.exit(0);
        }                           
    });
    frame.setLayout(new BorderLayout());
    mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
    player = mediaPlayerComponent.getMediaPlayer();
    frame.add(mediaPlayerComponent, BorderLayout.CENTER);
    JPanel controlsPane = new JPanel();
    ...
    frame.add(controlsPane, BorderLayout.SOUTH);
    player.addMediaPlayerEventListener(new MediaPlayerEventAdapter() {...}
    frame.setVisible(true);     
}
public void launchPlayer(int x, int y, int width, int height) {     
    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), getVLCLibPath());
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
    SwingUtilities.invokeLater(new Runnable() {
        public void run() {
            setUpPlayer(x, y, width, height);
        }
    });     
}
// Can be called to load video again and again
public void loadVideo(String videoPath) {
    player.stop();
    player.prepareMedia(videoPath); 
}
public static void main(String[] args) {
    Player player = new Player();
    player.launchPlayer(0,0,350,500);
    player.loadVideo("video-path");
}

我发现就我而言,这是由于显卡驱动程序中的错误造成的。我在带有英特尔HD 520显卡的Ubuntu 16.04 LTS上运行了我的代码。有关该错误的信息:https://bugs.launchpad.net/ubuntu/+source/xserver-xorg-video-intel/+bug/1537053

最新更新