当前位置: 首页 > 知识库问答 >
问题:

JavaFX MediaPlayer不播放unc网络文件

翟学文
2023-03-14

我想在Windows7下使用JavaFX(Java版本1.8.0_05)的MediaPlayer播放电影文件。我使用了FileChooser类,因此在我的应用程序中,可以在运行时选择本地文件和UNC网络文件。

摘自我的代码:

String textPath = ...
Path fileOnDisk = Paths.get(textPath);
...
Media media= new Media(fileOnDisk.toUri().toString());
...
MediaPlayer mediaPlayer = new MediaPlayer(media);

如果选择了本地文件,则一切正常。例如,Media对象包含以下URL(在调试器中读出):

media.url = "file:/D:/_Medien/Photo/Familie/2014_06_26%20Sensapolis%20Geburtstag%2010%20Adrian/56%20Holzgerüst%20klettern_AxelLeanderSteffen.MP4";

...媒体播放器可以毫无问题地构建。

我已将此文件复制到我的NAS驱动器。现在,如果从NAS(使用UNC语法)中选择了相同的文件,则也可以构建Media对象并包含以下url属性:

media.url = "file://VERBATIMNAS/public/Photo/Familie/2014_06_26%20Sensapolis%20Geburtstag%2010%20Adrian/56%20Holzgerüst%20klettern_AxelLeanderSteffen.MP4";

但一旦MediaPlayer构建时媒体指向UNC,我就会得到以下异常:

Exception in thread "JavaFX Application Thread" MediaException: UNKNOWN : com.sun.media.jfxmedia.MediaException: Could not create player! : com.sun.media.jfxmedia.MediaException: Could not create player!
    at javafx.scene.media.MediaException.exceptionToMediaException(MediaException.java:146)
    at javafx.scene.media.MediaPlayer.init(MediaPlayer.java:511)
    at javafx.scene.media.MediaPlayer.<init>(MediaPlayer.java:414)
    at de.kissphoto.view.mediaViewers.MovieViewer.setMedia(MovieViewer.java:216)

用UNC路径播放媒体我做错了什么...或者这是JavaFX中的一个错误?

注意:这两个文件路径不是手动输入的,而是在我的应用程序中使用JavaFX的文件选择器。

共有2个答案

太叔高义
2023-03-14

我知道我可能会因为这个答案而被责骂,但是。。。

我相信这是NIO的一个错误。因此,任何人能做的最好的事情就是绕过错误。有些变通方法比其他变通方法更优雅。这里有一个绝对有效,但相当粗糙:

new MediaPlayer(new Media(path.toUri(). toString(). replace eFirst("file://", "file:////")));

程枫
2023-03-14

我这样做

media = new Media(file.toURI().toURL().toExternalForm());
System.out.println("media "+media.getSource());

得到这个(相同的文件通过文件树和网络,我的下载文件夹是共享的名称在名为Amd的计算机上(这里没有想象:))

媒体文件:/D:/Downloads/oow2010-2。flv

媒体file:////Amd/Downloads/oow2010-2.flv

它是有效的。我不明白你为什么这么做。jpg文件。你能用媒体播放器打开它们吗?我不能。

 类似资料:
  • Desktop When building a Web Player, Unity automatically generates an HTML file next to the player data file. It contains the default HTML code to load the web player data file. 当编译一个网络播放器时,在数据文件旁,Unit

  • Desktop Web Player Streaming is critical for providing a great web gaming experience for the end user. The idea behind web games is that the user can view your content almost immediately and start pla

  • 需要一些帮助。视频加载在浏览器中,但从未开始播放。我正在使用hls.js将m3u8播放列表流式传输到浏览器。并且我使用FFmpeg创建ts和m3u8文件。 对于FFmpeg: HTML代码:

  • 问题内容: 只是一个基本的html链接问题。 我有一个Intranet设置,我需要链接到一些网络驱动器。它们位于\ server_drive \ blahblah \ doc.docx等驱动器上 在IE8或Firefox上都无法使用file://。如何链接到这些文件? 问题答案: 要从HTML文档链接到UNC路径,请使用file://///(是,这是五个斜杠)。 文件://////服务器/路径/到

  • Desktop To ease rapid deployment as well as testing of your web player in its intended setup, Unity comes with a selection of different templates and support for custom templates. 为了易于快速部署以及网络播放器设置测试,

  • 我正在尝试使用VideoPlayerController从互联网播放视频。netWork()方法,但我尝试的每个url都会遇到以下指定的错误: 源错误。E/flutter(4250):[ERROR: flutter/lib/ui/ui_dart_state.cc(157)]未处理的异常:平台异常(视频错误,视频播放器有错误com.google.android.exoplayer2.ExoPlayb