{ String media = "d:\\a.mp4";
String options = formatHttpStream("127.0.0.1", 5555);
System.out.println("Streaming '" + media + "' to '" + options + "'");
MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(args[0]);
HeadlessMediaPlayer mediaPlayer = mediaPlayerFactory.newHeadlessMediaPlayer();
mediaPlayer.playMedia(media, options);
Thread.currentThread().join();
}
private static String formatHttpStream(String serverAddress, int serverPort) {
StringBuilder sb = new StringBuilder(60);
sb.append(":sout=#duplicate{dst=std{access=http,mux=ts,");
sb.append("dst=");
sb.append(serverAddress);
sb.append(':');
sb.append(serverPort);
sb.append("}}");
return sb.toString();
}
LOG ERROR:
SLF4J:无法加载类" org.slf4j.impl.StaticLoggerBinder"。
SLF4J:默认为无操作(NOP)记录器实现
SLF4J:有关详细信息,请参阅http://www.slf4j.org/codes.html#StaticLoggerBinder。
Streaming' d:\ a.mp4' to':sout = #re duplicate {dst = std {access = http,mux = ts,dst = 127.0.0.1:5555}}'线程" main"中的例外情况java.lang.RuntimeException:无法加载本机库。
错误是"无法加载库' libvlc':在资源路径中找不到JNA本机支持(win32-amd64 / libvlc.dll)(C:\ Users \ Adam \ http \ VLC STREAM \ bin; E:\ Adam \ Desktop \ vlcj-3.7.0 \ jna-3.5.2.jar; E:\ Adam \ Desktop \ vlcj-3.7.0 \ platform-3.5.2.jar; E:\亚当\桌面\ vlcj-3.7.0 \ SLF4J-API 1.7.10.jar; E:\亚当\桌面\ vlcj-3.7.0 \ vlcj-3.7.0.jar; E:\亚当\桌面\ apache-测井log4j.jar)"
所需的本机库名为" libvlc.dll"和" libvlccore.dll"。
在下面的文本中表示包含" libvlc.dll"的目录的名称。和" libvlccore.dll" ...
有许多不同的方法可以指定查找本机库的位置:
包含NativeLibrary.addSearchPath(" libvlc","");在应用程序代码的开头。
包括System.setProperty(" jna.library.path","");在应用程序代码的开头。
启动应用程序时在命令行上指定-Djna.library.path =。
添加到系统搜索路径(并重新启动)。
如果仍然无效,则可能需要将本机库目录显式添加到操作中 系统配置 - 例如在Linux上,这可能意味着设置LD_LIBRARY_PATH环境变量或添加 配置到" /etc/ld.so.conf"文件或" /etc/ld.so.conf.d"目录。在这些选项中,设置 LD_LIBRARY_PATH是唯一不需要root权限的。
最后,无法混合CPU架构 - 无法加载64位Java虚拟机 32位本机库。
日志中可能会提供更多信息。
at uk.co.caprica.vlcj.binding.LibVlcFactory.create(LibVlcFactory.java:198)
at uk.co.caprica.vlcj.player.MediaPlayerFactory.<init>(MediaPlayerFactory.java:256)
at StreamHttp.main(StreamHttp.java:11)
LIB:
http://zapodaj.net/ed5de522e2b3e.jpg.html
我不知道
答案 0 :(得分:0)
在这种情况下,错误消息非常完整且有用 - VLCJ无法找到它需要运行的DLL文件,因此您需要告诉它它们的位置!
您的图片显示您添加了正确的Java库,它没有提及libvlc.dll和libvlccore.dll。
引述您的问题:
所需的本机库名为“libvlc.dll”和“libvlccore.dll”。
在下面的文字中表示包含“libvlc.dll”和“libvlccore.dll”的目录的名称......
有许多不同的方法可以指定查找本机库的位置:
包含NativeLibrary.addSearchPath(“libvlc”,“”);在应用程序代码的开头。
包含System.setProperty(“jna.library.path”,“”);在应用程序代码的开头。
启动应用程序时在命令行上指定-Djna.library.path =。
添加到系统搜索路径(并重新启动)。
您可以尝试多种选项,我看不到任何证据表明它们已在您提供的代码中使用。
如果它仍然不起作用,那么你可能有错误的架构(这是我经验失败的最常见原因) - 如果你安装了64位JDK,那么你将需要64位VLC,同样32位JDK仅适用于32位VLC。