VLCJ 无法在正常安装中找到插件

VLCJ cant find plugins in normal installation

我的 VLC.exe 工作正常,但有一点延迟。但是我的简单 VLCJ 代码不起作用。

import javax.swing.JPanel;
import com.sun.jna.NativeLibrary;
import javax.swing.JFrame;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

public class VideoPanel extends JPanel {

private static final String NATIVE_LIBRARY_SEARCH_PATH = "C:/Program Files/VideoLAN/VLC";

private EmbeddedMediaPlayerComponent mediaPlayerComponent;

public VideoPanel() {
    NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), NATIVE_LIBRARY_SEARCH_PATH);
    mediaPlayerComponent = new EmbeddedMediaPlayerComponent();
    this.add(mediaPlayerComponent);
}
public static void main(String args[]){
    JFrame frame = new JFrame();
    frame.add(new VideoPanel());
    frame.setBounds(100, 100, 800, 450);
    frame.setVisible(true);
}
}

我正在使用 64 位 java 1.8.0_60。我在 Windows 10 64 位上使用 vlc 2.2.4 64 位。

我的错误信息是这样的。

[00000000018bbbb0] 核心 libvlc 错误:找不到插件!检查您的 VLC 安装。 线程 "main" java.lang.RuntimeException 中的异常:无法初始化 libvlc。

这通常是由于在创建 MediaPlayerFactory 时传递了无效的 vlc 选项或 libvlc 无法找到所需的插件造成的。

如果 libvlc 无法找到所需的插件,以下说明可能会有所帮助:

在下面的文本中表示包含 "libvlc.dll" 和 "libvlccore.dll" 的目录的名称,表示包含 vlc 插件的目录的名称...

要使 libvlc 正常运行,vlc 插件必须可用,有许多不同的方法可以实现: 1.确保插件安装在“/plugins”目录中,正常的vlc安装应该是这样的。 2.设置VLC_PLUGIN_PATH操作系统环境变量指向“”.

日志中可能提供更多信息。

在 uk.co.caprica.vlcj.player.MediaPlayerFactory.(MediaPlayerFactory.java:300) 在 uk.co.caprica.vlcj.player.MediaPlayerFactory.(MediaPlayerFactory.java:259) 在 uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:349) 在 uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.(EmbeddedMediaPlayerComponent.java:217) 在 VideoPanel.(VideoPanel.java:19) 在 VideoPanel.main(VideoPanel.java:31)

我该怎么办?

这个问题并不少见,尤其是在 Windows 平台上。

vlcj入门教程使用此代码查找原生库及其插件:

package tutorial;

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.discovery.NativeDiscovery;

public class Tutorial {

    public static void main(String[] args) {
        boolean found = new NativeDiscovery().discover();
        System.out.println(found);
        System.out.println(LibVlc.INSTANCE.libvlc_get_version());
    }
}

这个 NativeDiscovery class 封装了最常见情况下所需的一切,包括设置 VLC_PLUGIN_PATH 环境变量。

这是确保使用 vlcj 正确初始化 LibVLC 的推荐方法,所以请尝试一下。