java - 如何在 Java Swing 中使用 vlcj 播放的视频添加搜索栏?

标签 java swing video seekbar vlcj

我已将代码精简为仅相关部分并将其发布在下方。该代码工作正常。视频会在您运行时播放,但没有搜索栏。

public class Screen {
//JFrmae
private JFrame frame;

// Panel which I add the canvas to
private JPanel pVid = new JPanel();

// Canvas
Canvas canvas = new Canvas();

// Embedded Media Player
EmbeddedMediaPlayer emp;


/**
 * Create the application.
 */
public Screen() {
    initialize();
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
    //Frame
    frame = new JFrame();
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setVisible(true);

    //Adding the panel to the frame
    frame.getContentPane().add(pVid);

    //Adding the canvas to the panel
    pVid.add(canvas);

    //Setting canvas size
    canvas.setSize(715, 402);

    //Loading the VLC native library
    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "lib");
    Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

    //Initializing the media player
    MediaPlayerFactory mpf = new MediaPlayerFactory();

    //Misc
    emp = mpf.newEmbeddedMediaPlayer(new Win32FullScreenStrategy(frame));
    emp.setVideoSurface(mpf.newVideoSurface(canvas));

    //Video file name and playing
    String file = "video.mp4";
    emp.prepareMedia(file);
    emp.play();

    //pack method
    frame.pack();
}

/**
 * Launch the application.
 */
public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
        public void run() {
            try {
                Screen window = new Screen();
                window.frame.setVisible(true);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    });
}

}

过去 4 天我一直在网上寻找答案。最后我决定在这里问。 vlcj 的官方网站上有他们制作的 vlcj 播放器的图片。这些图片中有一个搜索栏。链接到包含图片的网页:http://capricasoftware.co.uk/#/projects/vlcj

他们那里有很多有用的教程,但没有任何关于添加搜索栏的说明。

然后我尝试从他们的 GitHub 页面下载他们的 vlcj-player 项目。它显示错误,因为它无法解析应该导入的“com.google.common.collect.ImmutableList”。 (目前我正在阅读有关 ImmutableList 之类的东西,看看是否有办法修复它。)由于我还没有弄明白,所以我在他们的项目中寻找了一个名为 seekbar 之类的类。我找不到任何。

我也在网上其他地方搜索了答案,但就是找不到。我真的很感激任何帮助。谢谢。

编辑:

(此编辑是对@caprica 给我的建议的回应。阅读他们对这个问题的评论以及我在评论中对此的回复,以了解我在此编辑中所说的内容。我认为它'将来对其他人有用。)

好的,我的 Eclipse 或计算机一定有问题。 (我会在评论的最后写出我是如何修复它的。)它现在正在工作。我将逐步输入我所做的事情,以便将来下载和安装该项目可能对其他人有用。

  1. 下载项目。
  2. 将其作为 Maven 项目导入。 (导入 > Maven > 现有 Maven 项目)
  3. 现在在 Eclipse 中右键单击导入的项目并选择 Run As > Maven Install

就是这样。现在你可以正常运行项目了。如果您不知道如何运行该项目,请按此操作。右键单击该项目并选择“运行方式”>“Java 应用程序”,然后选择“VlcjPlayer – uk.co.caprica.vlcplayer”。

或者,您可以打开 main 方法所在的类并运行它。 VlcjPlayer类是main方法所在的地方。该类位于 uk.co.caprica.vlcplayer 包中。

我遇到的问题是,当我以 Maven Install 运行时,所有必需的文件都没有下载。但它在另一台电脑上运行良好。因为我知道文件下载到哪里,所以我只是从那台电脑上复制了文件夹,然后把它放在我电脑上的同一个地方。文件夹名称是“存储库”。它的位置是 C:\Users\User Name\.m2。也许这台 PC 中的 Eclipse 有问题。我稍后会重新安装它以避免将来出现问题。

这可能会有用,安装在这台电脑上的 VLC 是 64 位的。不确定这是否有所作为,但以防万一。

既然应用程序运行良好,我将查看代码并查看搜索栏是如何制作的。非常感谢@caprica 告诉我应该将其作为 Maven 项目导入。 :)

最佳答案

Basic Controls教程展示了基本方法:向框架添加一个按钮面板,并为每个按钮提供一个调用相关媒体播放器命令的 ActionListener。例如,这个概念性的 Rewind 按钮将“向后跳 10 秒(-10,000 毫秒)。”

JPanel controlsPane = new JPanel();
JButton rewindButton = new JButton("Rewind");
rewindButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        mediaPlayerComponent.getMediaPlayer().skip(-10000);
    }
});
controlsPane.add(rewindButton);
frame.add(controlsPane, BorderLayout.SOUTH);

软件设计由你决定,但你至少应该知道

关于java - 如何在 Java Swing 中使用 vlcj 播放的视频添加搜索栏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45555243/

相关文章:

java - 单击按钮时运行命令行代码

java - 检查 BigInteger 是否不是一个完美的正方形

java - 更改 swing 中 JFileChooser 的外观和感觉

java - 我们是否可以在框架提供的 ActionMap 中找到 Actions 的实际代码?

javascript - 视频背景不起作用(html、css、js)

java - Canvas 的面积有多少

java - 我的自定义外观实现似乎不起作用

jquery - 将网站背景的 youtube 视频静音

javascript - Chrome 中鼠标悬停时无法播放视频

java - 通过套接字从 Java 向 C 发送 int - 奇怪的结果