在Eclipse中播放视频效果很好,但是当将Java项目导出为可运行的JAR文件时,它不再起作用

时间:2019-07-05 17:04:32

标签: java eclipse vlcj

我写了一些代码,可以在JFrame中播放一些.mp4视频。我正在使用vlcj-3.0.1,并且在eclipse内一切正常。 但是,当我将Java项目导出为可运行的JAR文件并将res文件夹分别放置在与JAR文件相同的目录中时,视频arent不再播放。我一定对文件路径做错了,但我不知道我做错了。

我已经查了一下Google,发现了一个完全相同的问题线程:

VLCJ - playing a video from the "res" folder works great in eclipse, but not from the executable JAR file

我尝试使用caprica的建议,但没有成功。

    // Attributes
Canvas c = new Canvas();
MediaPlayerFactory mpf = new MediaPlayerFactory();
EmbeddedMediaPlayer emp = mpf.newEmbeddedMediaPlayer();
String mrl = new File("res/video/beach.mp4").getAbsolutePath();

// For Seeing the FilePath, so i can place the res folder correctly after 
//creating the runnable jar file
System.out.println(mrl);



// Giving the Libary for VLCJ Plugin
NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), "lib");
Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);

// Setting up the player, didnt including the jframe here, since its working
emp.setVideoSurface(mpf.newVideoSurface(c));
emp.setEnableMouseInputHandling(false);
emp.setEnableKeyInputHandling(false);
emp.prepareMedia(mrl);
emp.setRepeat(true);
emp.play();

我希望打开JFrame并循环播放视频。弹出JFrame但我只有黑屏...(我将jframe的背景色设置为黑色)

1 个答案:

答案 0 :(得分:1)

感谢您的回复。就是问题所在。

就像您已经提到的,我将资源提取到一个单独的文件夹中,然后将可运行的JAR文件传递到“外部”媒体。 它由另一个线程中提到的解决方案caprica工作:

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

现在情况有所不同。因为我想从保存jar文件的位置加载资源(因此jar文件会动态适应其自身位置和添加的资源。

我添加了以下几行:

String jarDir = new File(ClassLoader.getSystemClassLoader().getResource(".").getPath()).getAbsolutePath();
String dir = jarDir;
String path = "res/video/beach.mp4"

mpf = new MediaPlayerFactory();
emp = mpf.newEmbeddedMediaPlayer();
emp.prepareMedia(dir + path);
emp.setRepeat(true);
emp.play();