2

我有一个小型 JavaFX 应用程序可以在 windows / linux 客户端上播放一些 GoPro 视频。过去我使用过 GoPro 4。我已将视频下载到客户端并从本地存储播放。像这样:

    File file = new File("AnyVideo.MP4");
    Media m = new Media(file.toURI().toString());
    MediaPlayer mp = new MediaPlayer(m);
    mp.setAutoPlay(true);
    mediaView.setMediaPlayer(mp);

我现在会尝试切换到新的 GoPro 6。但它没有按预期工作。

问题可能是 JavaFX MediaPlayer 不支持新 GoPro 6 的编解码器。

  • GoPro 4:h264 AVC 视频编解码器
  • GoPro 6:h265 HEVC 视频编解码器

JavaFX MediaPlayer仅支持 h264 编解码器

有谁知道如何使用我的 JavaFX 应用程序播放 h265 HEVC 视频。在最好的情况下,解决方案可以立即从相机播放视频,而无需先将视频下载到客户端。GoPro 有一个小型媒体服务器来通过 HTTP 获取视频。例如: http://10.5.5.9:8080/videos/DCIM/100/ GPR10973.MP4

4

1 回答 1

3

原生 JavaFX 解决方案

也许这是重复的或至少与以下内容有关:

有关 JavaFX 错误跟踪系统中相关功能请求的链接,请参阅我对该问题的回答。

使用来自 JavaFX 的非 JavaFX 技术的解决方案

除了该问题的答案中讨论的解决方案之外,还有其他解决方案可能对您有用。特别是如果您的主要关注点只是获得某种播放,即使它没有与 JavaFX 媒体系统深度集成。

例如,原生 JavaFX 播放之外的其他方法可能是:

  1. VLCJ与某种 Swing 集成(例如 SwingNode,尽管这可能会或可能不会起作用)一起使用。
  2. 将 VLCJ 视频渲染为 JavaFX ImageView 或 Canvas。
  3. 如果您不需要嵌入视频,请启动本机视频播放器。
  4. 调用 ffmpeg将 h265 转换为 h264。
    • 我对此知之甚少,但对该主题的快速 google 显示了对 xuggle 项目的引用。
    • xuggler 项目的当前状态是:

      Xuggler 处于中断状态,因为没有人再积极开发它了。对不起。也就是说,您总是可以找到源代码并开始自己破解。祝你好运!

    • 所以我祝你好运;-)
  5. 通过HostServices.showDocument()调用启动本机浏览器以显示视频。
  6. 使用可以集成到 JavaFX 中的第三方浏览组件,包括对您要播放的媒体类型的支持,例如 JxBrowser:

在上面列出的选项中,我个人建议使用 HostServices 在本机浏览器中播放视频,如果这种解决方案可能适合您的话。

详细介绍各种选项可能超出了 StackOverflow 的范围(即使上面的列表开始看起来有时对库推荐不满意)。

于 2018-01-30T00:19:34.320 回答