繁体   English   中英

使用VLCJ将视频播放器添加到java中的JPanel

[英]Adding a video player to a JPanel in java using VLCJ

我目前正处于我想要合并的两件作品的位置。 我有一个在JFrame和GUI中运行的简单媒体播放器我想在JPanel上添加视频播放。

创建视频播放器窗口的代码如下:

private final JFrame vidFrame;
private final EmbeddedMediaPlayerComponent vidComp;

//Creates JPanel for video player
public Video() {

    vidFrame = new JFrame("VLC video test");
    vidFrame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    vidFrame.setLocation(100, 100);
    vidFrame.setSize(800, 800);

    vidComp = new EmbeddedMediaPlayerComponent();

    //This is the point where I am trying to add the video player to the GUI
    MainWindow.vidPanel.add(vidComp);

    vidFrame.add(vidComp);
    vidFrame.setVisible(true);
}

这是我试图将播放器添加到的面板:

    JPanel vidPanel = new JPanel();
    vidPanel.setBorder(new BevelBorder(BevelBorder.LOWERED, null, null, null, null));
    vidPanel.setBounds(10, 11, 532, 400);
    contentPane.add(vidPanel);

我收到错误消息:“vidPanel无法解析或不是字段”

有谁知道我怎么能纠正这个?

我遇到了同样的问题,今天就解决了。 问题是你正在使用JPanel并且你永远无法在那里观看视频,你应该使用Canvas。 这对我有用:

    Canvas canvas = new Canvas();
    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory();
    CanvasVideoSurface videoSurface = mediaPlayerFactory.newVideoSurface(canvas);
    EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer();
    mediaPlayer.setVideoSurface(videoSurface);

    mediaPlayer.playMedia(String with the name of the file);

我正在使用JDK 1.6和VLCJ 2.1

如果您正在使用IDE,则只需放置一个Canvas,就像放置JPanel一样,并删除第一行。

祝好运

首先,看起来你的vidPanel是一个局部变量,如果你需要从其他方法访问它,它应该是一个字段。 这是一个非常基本的Java - 任何初学者教程都应该涵盖这一点。 VLCJ并不是最简单的使用方法,如果你不清楚基础知识,你可能会失败。

其次,在你走得太远之前,嵌入式VLCJ播放器不适用于JPanel,只是原生的AWT Canvas - 所以你需要使用它。

首先,在我看来, vidPanel被定义为局部变量,通过在类范围中定义(而不是在方法中)使其成为成员字段。

这不是你在一个真正的可维护代码中的做法,而是为了快速解决你的问题:在MainWindow中定义一个返回vidPanelgetVidPanel()函数。

然后使用以下代码而不是错误的行:

MainWindow aMainWindowInstance = new MainWindow();
aMainWindowInstance.getVidPanel().add(vidComp);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM