JavaFX MediaPlayer:MP4 不会在 Windows 7 上循环

2024-03-13

我创建了一个基本的 JavaFX 媒体播放器。在我的 Windows 10 操作系统上,一切正常,并且完全按照预期运行。

private MediaPlayer initializeMediaPlayer(){
    Media media = new Media(getClass().getResource("1-1.mp4").toString());
    MediaPlayer mediaPlayer = new MediaPlayer(media);
    mediaPlayer.setAutoPlay(true);
    mediaPlayer.setCycleCount(MediaPlayer.INDEFINITE);
    mediaPlayer.setRate(1.25);
    mediaPlayer.setMute(true);
    return mediaPlayer;
}

然而,当我在 Windows 7 上运行此代码时,视频不会循环播放:它播放了五秒钟,在视频结束时,视频就冻结了。鉴于视频只有 5 秒长,循环对于该程序的正常运行是绝对必要的。

以下是我对这个问题的了解:

  • 该问题仅在 Windows 7 上的 mp4 文件中存在。当使用 Oracle 的示例 .flv 文件运行程序时(即http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv http://download.oracle.com/otndocs/products/javafx/oow2010-2.flv),效果很好。无法将我的 mp4 文件转换为 flv。
  • 该程序在我运行过的所有 Windows 10 计算机上运行良好。此问题仅出现在Windows 7中,但我没有在任何其他操作系统上测试过。我最终需要在只有 Windows 7 计算机的实验室中运行这个程序。
  • 所有其他 MediaPlayer 参数(即设置自动播放、setMute 和 setRate)在 Windows 10 和 Windows 7 中都可以正常工作。只是 setCycleCount 属性似乎在 Windows 7 上不起作用。
  • 在所有测试计算机上,我确保 Java 已更新到最新版本。我正在使用 Java 8 更新 144。

环境:

  • 赢得 10 教授
  • Java 8U144(但也使用 8U177 进行了测试)

我使用该网站上的 mp4 作为测试样本:技术幻灯片网站 http://techslides.com/sample-webm-ogg-and-mp4-video-files-for-html5

我的代码(注意:我使用自定义 FX 框架,所以我只向您展示设置播放器的控制器创建方法):

@Override
protected BorderPane createView() {
    final BorderPane view = new BorderPane();

    final Media media = new Media(getClass().getResource("small.mp4").toString());
    final MediaPlayer player = new MediaPlayer(media);
    player.setCycleCount(MediaPlayer.INDEFINITE);
    player.setRate(1.25);
    player.setMute(true);
    player.setOnEndOfMedia(() -> {
        player.play();
    });
    player.play();

    final MediaView mediaView = new MediaView(player);
    view.setCenter(mediaView);

    return view;
}

我使用回调并手动启动重播。这作为一个无限循环工作,尽管这是更“复杂”的方法。另外,这对我也有用,应该被认为是更“正确”的方式:

@Override
protected BorderPane createView() {
    final BorderPane view = new BorderPane();

    final Media media = new Media(getClass().getResource("small.mp4").toString());
    final MediaPlayer player = new MediaPlayer(media);
    player.setAutoPlay(true);
    player.setCycleCount(MediaPlayer.INDEFINITE); // or Integer.MAX_VALUE
    player.setRate(1.25);
    player.setMute(true);

    final MediaView mediaView = new MediaView(player);
    view.setCenter(mediaView);

    return view;
}

附加说明:

  • 我使用您链接的 Oracle 视频和small.mp4从技术幻灯片页面给出
  • 如果它对您有帮助,我可能会发布完整的无框架代码,您可以将其放置在视频中以查看它是否可以工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaFX MediaPlayer:MP4 不会在 Windows 7 上循环 的相关文章

随机推荐

  • Docker-machine:找不到 ca.pem

    在这里 我使用 docker 机器创建一个测试机器 dev docker machine create d virtualbox dev Creating CA C Users xxx docker machine certs ca pem
  • 使用 Prolog 中的累加器计算多项式的计算问题

    背景 我需要编写一个谓词 eval P A R 其中 P表示多项式系数列表 即1 2x 3x 2表示为 1 2 3 A 代表 X 的值 R 是 X A 处多项式的结果 Example eval 3 1 2 3 R 产生 R 24 编辑 之前
  • 角度指令 - 要求嵌入?

    我在下面收到错误 我不明白为什么 有任何想法吗 html
  • 当侧面项目具有不同宽度时,保持中间项目居中

    想象一下以下布局 其中点代表框之间的空间 Left box Center box Right box 当我删除右侧的框时 我喜欢中心框仍然位于中心 如下所示 Left box Center box 如果我删除左侧的框 情况也是如此 Cent
  • 使用 C++ 连接数据并将其插入到 MS Access 表中

    我正在开发一个项目 需要我对 MS Access 表执行插入查询 我一直在网上到处搜索 但似乎没有任何效果 任何帮助将不胜感激 另外 我必须为 VS2008 和 Visual C 6 0 编写此内容 谢谢 Use ODBC https le
  • 简单的 XML 解析 XML 到列表

    我使用 Simple XML simple xml 2 6 2 jar 来解析 xml 文件 例如
  • 哪个 MySQL 排序规则比较,例如é 和 e 相等吗?

    编辑 如果不存在这样的排序规则 如果 MySQL 有一个将字符串转换为 ASCII 等价物的函数 我可以解决它 FUNC V re Vaere 可能有几个这样的函数 每个字母表一个 这会很麻烦 但如果有效的话也是可以接受的 我需要一个 My
  • 什么是急切加载?

    什么是急切加载 我用 PHP JS 编码 但更通用的答案就可以了 我看到了很多关于 Java 和 Ruby 的问题 但我对这些语言都一窍不通 而且我发现很难阅读代码 我不知道首先应该做什么 共有三个级别 急切加载 当被要求时你会做一切 典型
  • “值初始化”是什么意思? [复制]

    这个问题在这里已经有答案了 可能的重复 以下短语在 C 中意味着什么 零初始化 默认初始化和值初始化 https stackoverflow com questions 1613341 what do the following phras
  • 在 Team Services 中的构建之间复制工件

    我们的代码被分成多个项目 项目 A 中的库随后由项目 B 使用 项目 B 再由项目 C 使用 等等 但是 我找不到在构建之间共享工件的方法 所有构建步骤都是关于发布工件的 但似乎没有一个是关于下载它们的 除了 Jenkins 下载工件 这正
  • Access 2010:连接三个表,未知错误

    我正在尝试在 SQL 查询中连接 MS Access 2010 中的三个表 SELECT Track trackName TrackIsGenre genre ContainsTracks albums FROM Track INNER J
  • 如何在苹果拒绝元数据后仅提交应用程序详细信息,以避免将应用程序添加到审核时钟

    由于演示帐户详细信息无效而导致元数据被拒绝后 我们是否可以重新提交应用程序 以避免添加回审核队列并重新启动审核时钟 As Per 此链接是 iTunes Connect 和元数据拒绝的一个简单错误 http www brynbodayle
  • 使图像空白透明,覆盖到 imshow()

    我有一个用 imshow 显示的空间数据图 我需要能够覆盖产生数据的晶格 我有一个PNG 作为黑白图像加载的晶格文件 我想要的该图像的部分 覆盖是黑线 它们是晶格 看不到线之间的白色背景 我想我需要将每个背景 白色 像素的 Alpha 设置
  • 如何简化复杂的多边形?

    最近我一直在思考如何将复杂的多边形转换为非复杂的多边形 这是怎么做到的 这就是我想做的事情 完成后我将使用 JavaScript 但任何形式的解决方案都可以 语言 算法或简单的英语 我将使用与手动绘制多边形时相同的启发式 这可能不是计算该多
  • 基本动画 HTML 和 CSS

    所以我只是一个初学者 我只是想弄清楚动画及其工作原理 我的计划是在一条直线上以无限度数 比方说 90 度 无限地移动球 以下是我想知道的几个问题 有没有更好的方法来使用具有共同规则和略有不同规则 具有不同旋转 的类 如何让球在具有不同旋转的
  • 检查变量是否是液体中的字符串或数组类型

    在 Jekyll 中你可以使用液体模板 https shopify github io liquid 我正在尝试编写一个包含网站中所有链接的导航 sitemap home demo right right left left 我想要实现的是
  • Google 地图片段在片段内返回 null

    所以我有一个包含地图片段的空片段 每当我尝试激活包含地图的片段时 我的应用程序都会崩溃并在这一行返回空指针错误 map MapFragment getFragmentManager findFragmentById R id map get
  • 在plsql中检查用户密码是否有效

    我需要检查数据库用户是否有效 我将允许用户使用以下方式更改密码ALTER命令 但在执行此操作之前 我想验证他们当前的密码 以确保他们的身份与他们所说的一致 是否可以在 pl sql 内部获取用户 密码组合并检查其是否有效 我认为 Oracl
  • Maven:存储库ID的含义

    在我的 POM 文件中 我指定了两个存储库
  • JavaFX MediaPlayer:MP4 不会在 Windows 7 上循环

    我创建了一个基本的 JavaFX 媒体播放器 在我的 Windows 10 操作系统上 一切正常 并且完全按照预期运行 private MediaPlayer initializeMediaPlayer Media media new Me