在JavaFX客户端中播放h265 HEVC

时间:2018-01-29 23:23:33

标签: java javafx hevc gopro

我有一个小型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 supports only the h264 codec

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

1 个答案:

答案 0 :(得分:3)

原生JavaFX解决方案

也许这是重复的或至少与:

有关

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

使用JavaFX中的非JavaFX技术的解决方案

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

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

  1. 使用VLCJ与某种Swing集成(例如SwingNode,尽管可能有效或无效)。
  2. 将VLCJ视频渲染为JavaFX ImageView或Canvas。
  3. 如果您不需要嵌入视频,请启动原生视频播放器。
  4. Call ffmpeg将h265转换为h264。
    • 我对此并不了解,但是该主题的快速谷歌显示了对xuggle项目的引用。
    • 当前status of the xuggler project是:
        

      Xuggler处于中断状态,因为没有人正在积极开发它。抱歉。也就是说,你总能找到源代码并开始自己攻击。祝你好运!

    • 所以我祝你好运; - )
  5. 通过HostServices.showDocument()调用启动原生浏览器以显示视频。
  6. 使用可集成到JavaFX中的第三方浏览组件,并包括对要播放的媒体类型的支持,例如JxBrowser:
  7. 在上面列出的选项中,我个人建议使用HostServices在本机浏览器中播放视频,如果这种解决方案可能适合您。

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