我有一个小型 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 媒体播放器仅支持 h264 编解码器 https://docs.oracle.com/javafx/2/api/javafx/scene/media/package-summary.html.
有谁知道如何使用 JavaFX 应用程序播放 h265 HEVC 视频。在最好的情况下,解决方案可以立即从摄像机播放视频,而无需先将视频下载到客户端。 GoPro 有一个小型媒体服务器来通过 HTTP 获取视频。例如:http://10.5.5.9:8080/videos/DCIM/100/GPR10973.MP4 http://10.5.5.9:8080/videos/DCIM/100/GPR10973.MP4
原生 JavaFX 解决方案
也许这是重复的或至少与以下内容相关:
-
向 JavaFX 2.2 添加其他视频编解码器/DVD 支持 https://stackoverflow.com/questions/8153227/adding-other-video-codecs-dvd-support-to-javafx-2-2/48512027#48512027.
请参阅我对该问题的回答,获取 JavaFX bug 跟踪系统中相关功能请求的链接。
使用 JavaFX 的非 JavaFX 技术的解决方案
除了该问题的答案中讨论的解决方案之外,还有其他可能适合您的解决方案。特别是如果您主要关心的只是获得某种播放效果,即使它没有与 JavaFX 媒体系统深度集成。
例如,本机 JavaFX 播放之外的其他方法可能是:
- Using VLCJ https://github.com/caprica/vlcj与某种 Swing 集成(例如 SwingNode,尽管这可能有效也可能无效)。
- Rendering the VLCJ video into a JavaFX ImageView or Canvas.
- 参见相关:使用 vlc api 在 Javafx 中播放视频 https://stackoverflow.com/questions/32476109/playing-video-in-java-fx-using-vlcj-api.
- 其中链接到以下项目:https://github.com/caprica/vlcj-javafx https://github.com/caprica/vlcj-javafx.
- Launch a native video player if you don't need the video embedded.
- Perhaps 桌面.open() https://docs.oracle.com/javase/9/docs/api/java/awt/Desktop.html#open-java.io.File- or the 流程API https://docs.oracle.com/javase/9/docs/api/java/lang/Process.html#toHandle--可以做到这一点。
-
Call ffmpeg https://stackoverflow.com/questions/1281353/use-java-ffmpeg-wrapper-or-simply-use-java-runtime-to-execute-ffmpeg to convert h265 to h264.
- 我对此了解不多,但快速搜索该主题会显示对 xuggle 项目的引用。
- Current status of the xuggler project http://www.xuggle.com/xuggler/status is:
Xuggler 处于中断状态,因为没有人再积极开发它。对不起。也就是说,您始终可以找到源代码并开始自己进行黑客攻击。祝你好运!
- 所以我祝你好运;-)
- 通过启动本机浏览器HostServices.showDocument() https://docs.oracle.com/javase/9/docs/api/javafx/application/HostServices.html#showDocument-java.lang.String-调用以显示视频。
- Use a third party browsing component that can be integrated into JavaFX and includes support for the media type you want to play back, for example JxBrowser:
- jxbrowser 中的 H.265 支持 https://stackoverflow.com/questions/44548089/h-265-support-in-jxbrowser
在上述选项中,就个人而言,我建议使用 HostServices 在本机浏览器中播放视频(如果这种解决方案可能适合您)。
详细介绍各种选项可能超出了 StackOverflow 的范围(即使上面的列表开始看起来有时也会对库推荐感到皱眉)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)