使用 SwingNode 在 JavaFX 中显示 VlcJ

2024-03-22

FXMLController初始化方法:

@FXML
private VBox vbContainer;
MediaPlayerVLC m_mediaPlayer;

public void initialize(URL url, ResourceBundle rb) {
        final SwingNode swingNode = new SwingNode();

        m_mediaPlayer = new MediaPlayerVLC();
        createAndSetSwingContent(swingNode, m_mediaPlayer);

        vbContainer.getChildren().add(0, swingNode);
    }

并创建AndSetSwingContent():

private void createAndSetSwingContent(final SwingNode swingNode, JComponent jComponent) {
        SwingUtilities.invokeLater(new Runnable() {
            @Override
            public void run() {
                swingNode.setContent(jComponent);
            }
        });
    }

MediaPlayerVLC 类:

package javafxswing;

import javax.swing.JPanel;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;

public class MediaPlayerVLC extends JPanel {

    private final EmbeddedMediaPlayerComponent mediaPlayerComponent;

    public MediaPlayerVLC() {

        setSize(350, 320);
        setVisible(true);        
        mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
        mediaPlayerComponent.setSize(350, 320);
        add(mediaPlayerComponent);
    }

    public MediaPlayer getMediaPlayer() {
        return mediaPlayerComponent.getMediaPlayer();
    }
}

我通过在 FXML 控制器中单击按钮来播放媒体:

@FXML
private void handleButtonAction(ActionEvent event) {
     System.out.println("You clicked me!");
     m_currentVideo = "video.mov";
     m_mediaPlayer.getMediaPlayer().playMedia(m_currentVideo);
}

现在,问题是:视频开始播放,但我看不到图像。我说它开始播放是因为我能听到音频。我究竟做错了什么?

非常感谢任何帮助。


简而言之,这样是行不通的。

来自 Javdoc 的SwingNode here: http://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/SwingNode.html http://docs.oracle.com/javase/8/javafx/api/javafx/embed/swing/SwingNode.html

它部分指出:

JComponent 实例中包含的组件层次结构不应包含任何重量级组件,否则 SwingNode 可能无法绘制它。

对于 vlcj 来说,EmbeddedMediaPlayerComponent延伸Panel,一个重量级的AWT组件。

要与 JavaFX 一起使用 vlcj,您可能必须自己直接渲染视频数据。这就是vlcj所谓的DirectMediaPlayerComponent是为了.这种方法的本质是DirectMediaPlayerComponent接收要渲染的每一帧视频数据,然后您可以使用PixelWriter或者你想出的其他方法。

这里有一个vlcj-javafx项目https://github.com/caprica/vlcj-javafx https://github.com/caprica/vlcj-javafx,并且这种方法适用于 Java7。由于错误的线程,它不适用于 Java8,记录如下:https://github.com/caprica/vlcj-javafx/issues/3 https://github.com/caprica/vlcj-javafx/issues/3

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

使用 SwingNode 在 JavaFX 中显示 VlcJ 的相关文章

  • java.lang.NoClassDefFoundError:org.apache.batik.dom.svg.SVGDOMImplementation

    我在链接到我的 Android LibGDX 项目的 Apache Batik 库时遇到了奇怪的问题 但让我们从头开始 在 IntelliJ Idea 中我有一个项目 其中包含三个模块 Main Android 和 Desktop 我强调的
  • Java Swing:从 JOptionPane 获取文本值

    我想创建一个用于 POS 系统的新窗口 用户输入的是客户拥有的金额 并且窗口必须显示兑换金额 我是新来的JOptionPane功能 我一直在使用JAVAFX并且它是不同的 这是我的代码 public static void main Str
  • Spring Batch 多线程 - 如何使每个线程读取唯一的记录?

    这个问题在很多论坛上都被问过很多次了 但我没有看到适合我的答案 我正在尝试在我的 Spring Batch 实现中实现多线程步骤 有一个包含 100k 条记录的临时表 想要在 10 个线程中处理它 每个线程的提交间隔为 300 因此在任何时
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • 制作一个交互式Windows服务

    我希望我的 Java 应用程序成为交互式 Windows 服务 用户登录时具有 GUI 的 Windows 服务 我搜索了这个 我发现这样做的方法是有两个程序 第一个是服务 第二个是 GUI 程序并使它们进行通信 服务将从 GUI 程序获取
  • 加速代码 - 3D 数组

    我正在尝试提高我编写的一些代码的速度 我想知道从 3d 整数数组访问数据的效率如何 我有一个数组 int cube new int 10 10 10 我用价值观填充其中 然后我访问这些值数千次 我想知道 由于理论上所有 3d 数组都存储在内
  • 控制Android的前置LED灯

    我试图在用户按下某个按钮时在前面的 LED 上实现 1 秒红色闪烁 但我很难找到有关如何访问和使用前置 LED 的文档 教程甚至代码示例 我的意思是位于 自拍 相机和触摸屏附近的 LED 我已经看到了使用手电筒和相机类 已弃用 的示例 但我
  • 反射找不到对象子类型

    我试图通过使用反射来获取包中的所有类 当我使用具体类的代码 本例中为 A 时 它可以工作并打印子类信息 B 扩展 A 因此它打印 B 信息 但是当我将它与对象类一起使用时 它不起作用 我该如何修复它 这段代码的工作原理 Reflection
  • Liferay ClassNotFoundException:DLFileEntryImpl

    在我的 6 1 0 Portal 实例上 带有使用 ServiceBuilder 和 DL Api 的 6 1 0 SDK Portlet 这一行 DynamicQuery query DynamicQueryFactoryUtil for
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Mockito when().thenReturn 不必要地调用该方法

    我正在研究继承的代码 我编写了一个应该捕获 NullPointerException 的测试 因为它试图从 null 对象调用方法 Test expected NullPointerException class public void c
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Eclipse Java 远程调试器通过 VPN 速度极慢

    我有时被迫离开办公室工作 这意味着我需要通过 VPN 进入我的实验室 我注意到在这种情况下使用 Eclipse 进行远程调试速度非常慢 速度慢到调试器需要 5 7 分钟才能连接到远程 jvm 连接后 每次单步执行断点 行可能需要 20 30
  • 仅将 char[] 的一部分复制到 String 中

    我有一个数组 char ch 我的问题如下 如何将 ch 2 到 ch 7 的值合并到字符串中 我想在不循环 char 数组的情况下实现这一点 有什么建议么 感谢您花时间回答我的问题 Use new String value offset
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 玩!框架:运行“h2-browser”可以运行,但网页不可用

    当我运行命令时activator h2 browser它会使用以下 url 打开浏览器 192 168 1 17 8082 但我得到 使用 Chrome 此网页无法使用 奇怪的是它以前确实有效 从那时起我唯一改变的是JAVA OPTS以启用
  • 使用 xpath 和 vtd-xml 以字符串形式获取元素的子节点和文本

    这是我的 XML 的一部分

随机推荐

  • Web 控制浏览器后退按钮

    我正在使用导航 2 和setUrlStrategy PathUrlStrategy 我添加了WillPopScope但是onWillPop单击浏览器的后退按钮时不会调用 Widget build context return WillPop
  • 了解 LISP 中的绑定变量和自由变量

    我正在阅读SICP 又出现了绑定变量和自由变量的话题 然而 我对此感到困惑 术语 绑定变量 仅适用于形式参数变量吗 此外 文本还指出过程定义 绑定 其形式参数 这让我感到困惑 因为有些人说我们将值 绑定 到变量 显然 当我们谈论不同类型的变
  • Gulp 复制空目录

    In my gulp构建我已经创建了一个运行的任务after所有的编译 丑化和缩小都已经发生 此任务只是复制所有内容src进入dest早期任务尚未触及 处理的目录 我遇到的一个小问题是 这会导致目录中出现空目录dest目录 有没有办法告诉g
  • [UWP]调整BitmapImage的大小、压缩并获取base64字符串

    这是我的第一个主题 我正在 UWP 中重写在 Silverlight 8 WP8 中开发的应用程序 我在从 BitmapImage 获取 Base64 编码字符串时遇到问题 我工作了很多天都找不到解决方案 总之我需要 从设备图库中选择图像
  • H2 控制台和 Spring Security - PermitAll() 不起作用

    我正在创建rest api并实现Spring Security 一切正常 但我希望 目前 当我仍在开发时 能够让任何未经授权的人打开localhost 8080 console 我的代码 Override protected void co
  • docker-desktop 使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器?

    在我看来就像 WSL2 容器docker desktop使用 12 GB RAM 来运行一个具有 24 MB RAM 的容器 是什么赋予了 详情如下 另外 当我将所有进程中的所有驻留 RAM VSZ 加起来时docker desktop 总
  • 使用 Node.js 在 Mongodb 中存储 JS 函数时出现问题

    我有一个简单的 JS 类 var User function id this id id this sayHello function return hello 然后 我使用默认的 Node js 驱动程序将其存储在 MongoDB 中 u
  • 在 Razor 中显示表达式值

    我想在剃刀视图中将以下表达式的值显示为文本 doc Extension string Empty ToUpperInvariant 我已经尝试了所有变体 但似乎没有任何效果 我知道我可以使用临时变量来存储该表达式的值 但我想知道是否有一种方
  • 如何解码/重新创建 Google Flights 搜索网址?

    问题 On 谷歌航班 http www google com travel flights 搜索信息被编码在 URL 参数中 这样用户就可以轻松地彼此共享航班搜索 URL 格式如下所示 https www google com travel
  • Spring Boot - RestController 反序列化 YAML 上传?

    如何配置 Spring Boot RestController 来接受 YAML 上传 下面的结果是 415 我从调试中可以看到MappingJackson2HttpMessageConverter我的 Spring 上下文中的实例仅支持
  • 在 React.js 中以组件状态存储表单输入,特别是密码

    有一个关于 React js 中表单的问题 我实际上没有问题 但想知道我的方法是否有任何缺陷 我有一个简单的表单 有两个电子邮件和密码输入 如下所示
  • 如何加速我的 Android-openCV 应用程序?

    我已经实现了一个 openCV 应用程序 我使用 SURF 描述符 它工作正常 代码如下所示 我减小输入视频流的大小以加快速度 capture set Highgui CV CAP PROP FRAME WIDTH display getW
  • 通过excel vba GUI将excel文件导出为txt格式

    我的目标是将excel文件导出为txt文件格式 这个想法是有一个 GUI 让用户选择她 他想要导出的 Excel 文件 并且她 他可以决定保存哪个文件路径和文件名 用户完成输入输出设置后 只需点击导出文本按钮即可将excel文件导出为txt
  • 如何向 Java 应用程序的 Windows 资源管理器添加上下文菜单?

    如何为 Java 应用程序添加一个子菜单项到 Windows 资源管理器上下文菜单 例如 7 Zip 就是这样做的 我知道有两种方法可以做到这一点 最奇特的方法是编写一个 Windows shell 扩展 我相信这就是 powerarchi
  • 在构造函数之外使用 .setVisible() 会破坏我的 GUI

    我现在正在学习java GUI的基础知识 我遇到了这种奇怪的情况 我无法真正解释 我有一个 GUI 类 我在其中构建了一个简单的 JFrame 如果我使用 setVisible true 在构造函数内如果我使用它 一切正常outside 没
  • 有什么方法可以将 ActionScript 3 中的常规字符串转换为 Latin-1 字符代码的 ByteArray?

    我在将字符串转换为 UTF 16 编码字符的 byteArray 时没有问题 但我尝试与之通信的应用程序 用 Erlang 编写 仅理解 Latin 1 编码 有什么方法可以从 Actionscript 3 中的字符串生成充满 Latin
  • 打开开发人员工具时,Javascript onclick 不会触发

    我最近遇到一个问题 当浏览器中的开发人员工具打开时 HTML 按钮的 onclick 事件不会触发 但当工具关闭时 它会触发
  • xcodebuild安装路径?

    我正在使用 xcode 开发 iPhone 应用程序 我想自动化 构建和运行 过程 因此想知道是否有任何方法可以在模拟器或设备上安装构建的应用程序 有xcodebuild install命令但我不知道如何设置安装目录DSTROOT到模拟器
  • Bootstrap 按钮组预选按钮,仅含 html

    使用 Bootstrap 我想要一个按钮组 但预选了一个按钮 如果我使用下面的 html 那么第一个按钮将被预先选择 但即使我单击其他按钮之一 它仍然保持活动状态 仅使用 html 如何定义选择一个按钮的按钮组 当我单击其他按钮之一时 该按
  • 使用 SwingNode 在 JavaFX 中显示 VlcJ

    FXMLController初始化方法 FXML private VBox vbContainer MediaPlayerVLC m mediaPlayer public void initialize URL url ResourceBu