小编典典

VLCJ-从“ res”文件夹播放视频在eclipse中效果很好,但不能从可执行的JAR文件中播放

java

我在项目内的“ res / media”文件夹中放置了一个.MP4视频。我可以使用以下代码在Eclipse中轻松地在应用程序中播放此视频:

String url = getClass().getResource("/media/video.mp4").getFile();
url = new File(url).getPath();
showMedia(url);       //the method that plays the video

我必须使用此代码,因为仅URL url = getClass().getResource("/media/video.mp4");使VLCJ无法使用此URL访问视频。

创建可执行JAR文件时,在控制台中出现以下错误:

libdvdnav: Using dvdnav version 5.0.0
libdvdread: Could not open D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 with libdvdcss.
libdvdread: Can't open D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 for reading
libdvdnav: vm: failed to open/read the DVD
[1644d0ac] filesystem access error: cannot open file D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 (Invalid argument)
[1644d0ac] main access error: File reading failed
[1644d0ac] main access error: VLC could not open the file "D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4" (Invalid argument).
[1645643c] main input error: open of `file:///D:/Desktop/file%3A/D%3A/Desktop/app.jar%21/media/video.mp4' failed
[1645643c] main input error: Your input can't be opened
[1645643c] main input error: VLC is unable to open the MRL 'file:///D:/Desktop/file%3A/D%3A/Desktop/app.jar%21/media/video.mp4'. Check the log for details.

库已成功加载,我什至可以播放JAR文件之外的任何视频。

有什么建议?

并预先感谢。


阅读 356

收藏
2020-11-26

共1个答案

小编典典

媒体资源定位符(MRL)与URL不同。

您发布的日志显示了VLC正在尝试打开的内容。内容丰富的部分是:

[1644d0ac] filesystem access error: cannot open file D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4 (Invalid argument)

"D:\Desktop\file:\D:\Desktop\app.jar!\media\video.mp4" 显然不是有效的文件名?

因此,此代码存在缺陷:

String url = getClass().getResource("/media/video.mp4").getFile();

这种没有.getFile()的东西通常用于从应用程序类路径加载资源。但是,当您尝试获取文件名时,情况并非如此。

您应该执行以下操作:

String mrl = new File("res/media/video.mp4").getAbsolutePath();

但这当然取决于您的应用程序的“当前”目录是什么,并且不能在jar文件中运行。

另一方面,VLC 可以 播放zip(因此是jar)文件中包含的媒体,其MRL看起来与您发布的内容有点相似。就像是:

zip://file.jar!/res/media/video.mp4
2020-11-26