JavaFX MediaPlayer不播放unc网络文件

时间:2014-06-28 21:56:22

标签: media-player media javafx-8 unc

我想在Windows 7下使用JavaFX的MediaPlayer(Java版本1.8.0_05)播放电影文件。 我使用了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";

...可以毫无问题地构建mediaPlayer。

我已将此文件复制到我的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";

但是,只要媒体指向UNC构建MediaPlayer,我就会得到以下异常

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的FileChooser。

2 个答案:

答案 0 :(得分:3)

我这样做

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

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

  

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

     

media file://// Amm/Downloads/oow2010-2.flv

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

答案 1 :(得分:0)

我知道我可能会因为这个答案而感到厌烦,但是......

我相信这是NIO中的一个错误。因此,任何人都可以做的最好的事情就是解决这个问题。一些解决方法比其他解决方案更优雅。这是绝对有效的,但它相当粗糙:

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