java - vlcj在尝试创建服务器流时出错

时间:2015-05-07 23:40:10

标签: java compiler-errors vlcj

   { 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" ...

有许多不同的方法可以指定查找本机库的位置:

  1. 包含NativeLibrary.addSearchPath(" libvlc","");在应用程序代码的开头。

  2. 包括System.setProperty(" jna.library.path","");在应用程序代码的开头。

  3. 启动应用程序时在命令行上指定-Djna.library.path =。

  4. 添加到系统搜索路径(并重新启动)。

  5. 如果仍然无效,则可能需要将本机库目录显式添加到操作中 系统配置 - 例如在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

    我不知道

1 个答案:

答案 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。