我写了一些代码,在JFrame中播放一些.mp4视频。我正在使用vlcj-3.0.1,并且在eclipse内一切正常。
但是,当我将Java项目导出为可运行的JAR文件并将res文件夹分别放置在与JAR文件相同的目录中时,无法播放视频。我的文件路径一定做错了,但是我不知道我做错了什么。
我已经查了一下谷歌,发现了一个完全相同的问题线程:
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的背景色设置为黑色)。
最佳答案
感谢回复。那正是问题所在。
就像您已经提到的,我将资源提取到一个单独的文件夹中,并使可运行的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();
关于java - 在Eclipse中播放视频效果很好,但是当将Java项目导出为可运行的JAR文件时,它不再起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56906909/