从 vlcj 播放器数组中播放视频

2024-01-12

我正在尝试播放以字符串形式提供的 MRL 列表中的视频。

问题是,当我尝试运行该类时,面板列表显示带有按钮,只有一个面板工作,但播放按钮不起作用,其他面板也不起作用。

尽管我故意留下了停止按钮,因为我没有向它们添加动作侦听器。

我想要实现的是,当我运行课程时,播放一个视频,当我单击另一个视频的播放按钮时,当前视频停止并移至下一个视频。

我不知道我哪里错了。

这是我的代码:

public class MediaPlayer extends JPanel {

    //Declares our media player component
    private EmbeddedMediaPlayerComponent[] mediaplayer;
    private String[] mediapath = {""};
    private final String vlcpath = "C:\\Program Files (x86)\\VideoLAN\\VLC";
    private JPanel video_pnl, control_pnl;
    private JButton[] play_btn, stop_btn;
    private int but = 0;

    public MediaPlayer(String mediapath[]) {
        this.mediapath = mediapath;

        play_btn = new JButton[1];
        stop_btn = new JButton[1];
        mediaplayer = new EmbeddedMediaPlayerComponent[1];
        int increment = 0;
        while (increment < mediapath.length) {
            video_pnl = new JPanel();
            video_pnl.setLayout(new BorderLayout());
            control_pnl = new JPanel();
            control_pnl.setLayout(new FlowLayout(FlowLayout.CENTER));
            for (int i = 0; i < 1; i++) {

                NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), vlcpath);
                mediaplayer[i] = new EmbeddedMediaPlayerComponent();
                play_btn[i] = new JButton("play");
                stop_btn[i] = new JButton("stop");


                video_pnl.add(mediaplayer[i], BorderLayout.CENTER);

                control_pnl.add(play_btn[i]);
                control_pnl.add(stop_btn[i]);
                video_pnl.add(control_pnl, BorderLayout.SOUTH);

                Handler handler = new Handler();
                play_btn[i].addActionListener(handler);
            }
            add(video_pnl);
            increment++;
        }
    }

    private class Handler implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == play_btn){
                play();
            }
        }
    }

    public void play() {
        for (int i = 0; i < mediapath.length; i++) {
            mediaplayer[i].getMediaPlayer().playMedia(mediapath[i]);
        }
    }

    public static void main(String[] args) {
        //Declare and initialize local variables
        String[] mediaPath =       {"C:\\\\Users\\\\goldAnthony\\\\Desktop\\\\Videos\\\\Whistle.mp4", "C:\\\\Users\\\\goldAnthony\\\\Desktop\\\\Videos\\\\Beyonce_Hello.mp4",
        "C:\\Users\\goldAnthony\\Desktop\\Videos\\HansRosling_2012S_480p.mp4","C:\\Users\\goldAnthony\\Desktop\\Videos\\oow2010_2.mp4",
        "C:\\Users\\goldAnthony\\Desktop\\Videos\\The_Economic_Environment.mp4"};

        //creates instances of the VlcPlayer object, pass the mediaPath and invokes the method "run"
        MediaPlayer mediaplayer = new MediaPlayer(mediaPath);
        JFrame ourframe = new JFrame();
        ourframe.setContentPane(mediaplayer);
        ourframe.setLayout(new GridLayout(5, 1));
        ourframe.setSize(300, 560);
        ourframe.setVisible(true);
        mediaplayer.play();
        ourframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
                control_pnl.add(play_btn[i]);
                control_pnl.add(stop_btn[i]);
                video_pnl.add(control_pnl, BorderLayout.SOUTH);

                Handler handler = new Handler();
                play_btn[i].addActionListener(handler);
            }
            add(video_pnl);
            increment++;
        }
    }

    private class Handler implements ActionListener {

        @Override
        public void actionPerformed(ActionEvent e) {
            if(e.getSource() == play_btn){
                play();
            }
        }
    }

    public void play() {
        for (int i = 0; i < mediapath.length; i++) {
            mediaplayer[i].getMediaPlayer().playMedia(mediapath[i]);
        }
    }

    public static void main(String[] args) {
        //Declare and initialize local variables
        String[] mediaPath =       {"C:\\\\Users\\\\goldAnthony\\\\Desktop\\\\Videos\\\\Whistle.mp4", "C:\\\\Users\\\\goldAnthony\\\\Desktop\\\\Videos\\\\Beyonce_Hello.mp4",
        "C:\\Users\\goldAnthony\\Desktop\\Videos\\HansRosling_2012S_480p.mp4","C:\\Users\\goldAnthony\\Desktop\\Videos\\oow2010_2.mp4",
        "C:\\Users\\goldAnthony\\Desktop\\Videos\\The_Economic_Environment.mp4"};

        //creates instances of the VlcPlayer object, pass the mediaPath and invokes the method "run"
        MediaPlayer mediaplayer = new MediaPlayer(mediaPath);
        JFrame ourframe = new JFrame();
        ourframe.setContentPane(mediaplayer);
        ourframe.setLayout(new GridLayout(5, 1));
        ourframe.setSize(300, 560);
        ourframe.setVisible(true);
        mediaplayer.play();
        ourframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}

The BorderLayout.CENTER你的JPanel video_pnl只能容纳单个组件。构造函数的循环结束后,它引用最后一个mediaplayer[i]添加。在你的监听器中,你可以使用CardLayout http://docs.oracle.com/javase/tutorial/uiswing/layout/card.html更改面板或更新单个面板。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 vlcj 播放器数组中播放视频 的相关文章

  • java中监视目录变化

    我正在使用 WatchService 来监视目录中的更改 特别是目录中新文件的创建 下面是我的代码 package watcher import java nio file import static java nio file Stand
  • 使用 Tabula 通过 Python 读取 pdf 时出现 Java 错误

    我已经安装了 tabula 库 用于使用 python 将 pdf 读取到 pandas 数据框中 但是当我运行代码时 import tabula df tabula read pdf sample1 pdf pages 1 我得到了例外
  • 有没有创建 Cron 表达式的 Java 代码? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我需要一个 Java 代码来根据用户输入创建一个 cron 表达式 用户输入是时间 频率和执行次数 只需从评论中添加 自己创建 即可
  • java.lang.ClassNotFoundException:javax.mail.MessagingException

    我想使用 eclipse 将电子邮件从我的 gmail 帐户发送到另一个邮件帐户 我使用 apache tomcat 7 0 34 作为我的 Web 服务器 并使用端口 8080 作为 apache 服务器 HTTP 1 1 并使用 JRE
  • 垃圾收集器如何在幕后工作来收集死对象?

    我正在阅读有关垃圾收集的内容 众所周知 垃圾收集会收集死亡对象并回收内存 我的问题是 Collector 如何知道任何对象已死亡 它使用什么数据结构来跟踪活动对象 我正在研究这个问题 我发现GC实际上会跟踪活动对象 并标记它们 每个未标记的
  • 与 Eclipse 中的 Java Content Assist 交互

    作为我的插件项目的一部分 我正在考虑与 Eclipse 在 Java 文件上显示的内容辅助列表进行交互 我正在尝试根据一些外部数据对列表进行重新排序 我看过一些有关创建新内容辅助的教程 但没有看到有关更改现有内容辅助的教程 这可能吗 如果是
  • Java 的支持向量机?

    我想用Java编写一个 智能监视器 它可以随时发出警报detects即将到来的性能问题 我的 Java 应用程序正在以结构化格式将数据写入日志文件
  • 为什么即使我的哈希码值相同,“==”也会返回 false

    我写了一个像这样的课程 public class HashCodeImpl public int hashCode return 1 public static void main String args TODO Auto generat
  • Android中如何使用JNI获取设备ID?

    我想从 c 获取 IMEIJNI 我使用下面的代码 但是遇到了未能获取的错误cls 它总是返回NULL 我检查了环境和上下文 它们都没有问题 为什么我不能得到Context班级 我在网上搜索了一下 有人说我们应该使用java lang Ob
  • 在Java中运行bat文件并等待

    您可能会认为从 Java 启动 bat 文件是一项简单的任务 但事实并非如此 我有一个 bat 文件 它对从文本文件读取的值循环执行一些 sql 命令 它或多或少是这样的 FOR F x in CD listOfThings txt do
  • 在 Java 中获取并存储子进程的输出

    我正在做一些需要我开始子处理 命令提示符 并在其上执行一些命令的事情 我需要从子进程获取输出并将其存储在文件或字符串中 这是我到目前为止所做的 但它不起作用 public static void main String args try R
  • JDBC 时间戳和日期 GMT 问题

    我有一个 JDBC 日期列 如果我使用 getDate 则会得到 date 仅部分2009 年 10 月 2 日但如果我使用 getTimestamp 我会得到完整的 date 2009 年 10 月 2 日 13 56 78 890 这正
  • 不可变的最终变量应该始终是静态的吗? [复制]

    这个问题在这里已经有答案了 在java中 如果一个变量是不可变的并且是final的 那么它应该是一个静态类变量吗 我问这个问题是因为每次类的实例使用它时创建一个新对象似乎很浪费 因为无论如何它总是相同的 Example 每次调用方法时都会创
  • hibernate 6.0.2.Final 和 spring boot 2.7.0 的entityManagerFactory bean 未配置问题

    所以最近我想升级我的 Spring Boot 项目项目的一些依赖项 特别是这些组件 雅加达 EE 9 弹簧靴2 7 休眠 6 0 2 Final 完成此操作后 所有更新和代码折射 更新将 javax 导入到 jakarta 以及一些 hib
  • 使用 HtmlUnit 定位弹出窗口

    我正在构建一个登录网站并抓取一些数据的程序 登录表单是一个弹出窗口 所以我需要访问这个www betexplorer com网站 在页面的右上角有一个登录链接 写着 登录 我单击该链接 然后出现登录弹出表单 我能够找到顶部的登录链接 但找不
  • 列表过滤器内的 Java 8 lambda 列表

    示例 JSON id 1 products id 333 status Active id 222 status Inactive id 111 status Active id 2 products id 6 status Active
  • java 中的蓝牙 (J2SE)

    我是蓝牙新手 这就是我想做的事情 我想获取连接到我的电脑上的蓝牙的设备信息并将该信息写入文件中 我应该使用哪个 api 以及如何实现 我遇到了 bluecove 但经过几次搜索 我发现 bluecove 不能在 64 位电脑上运行 我现在应
  • 子类构造函数(JAVA)中的重写函数[重复]

    这个问题在这里已经有答案了 为什么在派生类构造函数中调用超类构造函数时 id 0 当创建子对象时 什么时候在堆中为该对象分配内存 在基类构造函数运行之后还是之前 class Parent int id 10 Parent meth void
  • Log4j2 ThreadContext 映射不适用于parallelStream()

    我有以下示例代码 public class Test static System setProperty isThreadContextMapInheritable true private static final Logger LOGG
  • Spring RESTful控制器方法改进建议

    我是 Spring REST 和 Hibernate 的新手 也就是说 我尝试组合一个企业级控制器方法 我计划将其用作未来开发的模式 您认为可以通过哪些方法来改进 我确信有很多 RequestMapping value user metho

随机推荐

  • scikit-learn 字典学习中的分段错误(核心转储)

    我写了一个字典学习的代码 它对于 100 个图像工作正常 但如果我使用 200 个图像来学习字典 我会收到 Segment failure 错误 这是我的代码 gt from time import time import matplotl
  • 存储库模式 - 如何正确处理 JOIN 和复杂查询?

    我对存储库模式有疑问 如何在多个存储库之间执行 JOIN 操作 在这个项目中 我们使用了MVC EF DDD 我知道这种问题已经出现过好几次了 我稍后会在本问题中引用这些问题 在通用存储库模型 IRepository 和特定存储库模型之间
  • Python:类型错误:“NoneType”对象不可下标

    Uses python3 import sys def max dot product a b n a a sort reverse True b b sort reverse True res 0 for i in range n res
  • 在 Python 2 中按定义顺序迭代枚举

    我正在使用 python 3 4 和 python 2 7 的反向移植 Enum 功能 gt python version Python 2 7 6 gt pip install enum34 Installs version 1 0 根据
  • Swift:尝试导入 UIKit 时出错

    当我尝试在我的 swift 文件中导入 UIKit 时 我遇到了这个非常奇怪的错误 我的代码很简单 import UIKit class Test NSObject 我在 导入 UIKit 时收到的错误是 未知类型名称 导入 预期的 在顶级
  • 是否可以从 iPhone safari 浏览器获取 UDID?

    我需要从 iPhone safari 浏览器检索 UDID 或任何其他设备唯一 ID 通过 cookie 或请求 响应标头或任何其他方式 如果可以的话可以怎样做 谢谢 Z 您可以使用 mobileconfig 看http whatsmyud
  • WCF 数据服务或 RIA 服务可以用 NHibernate 实现吗?

    从何而来我在网上读到 http wildermuth com 2009 09 29 Choosing a Data Access Layer for Silverlight 3 WCF 数据服务似乎通过服务器上的实体框架绑定到数据访问 有没
  • 从 Android 活动转到主屏幕

    我正在 android 中制作一个应用程序 我想实现一个按钮 以便每当按下它时 我只需返回主屏幕 我知道我们有硬件键和软键 当没有硬件键时 可以实现此功能 但我想为此应用程序添加此功能 有人知道该怎么做吗 谢谢 Try this Inten
  • Android 方向变化

    我有一个简单的Activity called SingleTouchTest理解屏幕触摸 奇怪的是SingleTouchTest从我所处的任何方向开始 但旋转设备不会导致屏幕旋转 我的测试设备是运行 Android 4 0 3 的 Acer
  • 如何以编程方式合并具有潜在冲突的文本文件(ala git 或 svn 等)?

    作为较大项目的一部分 我希望能够获取两个文本主体并将它们交给合并算法 该算法返回自动合并结果 在更改不冲突的情况下 或抛出错误并且 可能 生成一个文本文档 其中突出显示冲突的更改 基本上 我只是想要一种编程方式来完成地球上每个源代码控制系统
  • 如何仅在精确的 url 匹配时重定向?

    我正在尝试使用 apache htaccess 进行重定向 我有以下代码 redirectMatch 301 user http clients mydomain com 它工作得很好 但我不想要 用户登录 被引导至 http client
  • JSF 中 的范围是什么?

    我曾两次看到先前浏览的页面中的变量可能会干扰或替换下游查看的页面中的变量 例如 h datatable var 那么 ui param 的范围是什么 有没有办法遏制它 它基本上在 EL 上下文中设置一个新的变量映射 也可以看看的源代码Par
  • mysql 和 mysql2 gem 有什么区别

    我曾经与mysql宝石 但现在我经常听说mysql2宝石 此外 它还包含在Gemfile默认情况下Rails 3 0 x 使用有什么区别和优点mysql2 gem 这是来自mysql2 宝石页面 https github com brian
  • 当到达 gdb 中的断点时是否可以停止所有其他线程的执行?

    那么 一旦我在某个线程中遇到断点 是否可以暂停其他线程直到我继续 在全停止模式下 当前发布版本支持的唯一模式 只要任何线程停止 由于断点或信号 GDB 就会停止所有线程 当您继续停止的线程时 所有其他线程也将继续 除非您这样做set sch
  • 如何将 EasyMock 模拟注入测试类私有字段

    我正在使用 EasyMock 创建模拟 它是测试类中的私有参数 没有设置器 之一 我尝试使用反射 但它不能正常工作 public class TestedClassTest Test public void test TestedClass
  • 如何将 Bitmap 转换为 Base64 字符串?

    我正在尝试捕获屏幕 然后将其转换为 Base64 字符串 这是我的代码 Rectangle bounds Screen GetBounds Point Empty Bitmap bitmap new Bitmap bounds Width
  • 将 SQL 注释添加到 Linq 生成的查询中,以便它在 SQL 探查器中可见

    我们想要在一个项目中使用 Linq to SQL 这是我们第一次使用 Linq 通常我们只使用存储过程调用 到目前为止 一切都运行良好 但 DBA 询问我们是否可以以在 Profiler 中可见的方式标记 Linq 生成的 SQL 查询 我
  • 使用 google_oauth2 获取“错误:redirect_uri_mismatch”

    该网址似乎是正确的 昨天更新 文件也是 omn iauth rb provider google oauth2 MY CLIENT ID apps googleusercontent com MY CLIENT SECRET scope g
  • create-react-app 子文件夹项目不会 lint

    在子文件夹中使用 create react app 引导的项目不会出现 lint 但是 如果我在 VSCode 中以 root 身份打开项目子文件夹 如下图所示 或者在 root 下设置一个新的 create react app 项目 则
  • 从 vlcj 播放器数组中播放视频

    我正在尝试播放以字符串形式提供的 MRL 列表中的视频 问题是 当我尝试运行该类时 面板列表显示带有按钮 只有一个面板工作 但播放按钮不起作用 其他面板也不起作用 尽管我故意留下了停止按钮 因为我没有向它们添加动作侦听器 我想要实现的是 当