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

时间:2017-03-23 09:47:03

标签: java plugins vlcj

我的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 64bit上使用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操作系统环境变量设置为指向""。

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

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

我该怎么办?

1 个答案:

答案 0 :(得分:0)

这是一个不常见的问题,尤其是在Windows平台上。

vlcj介绍教程使用此代码查找本机库及其插件:

#include <QApplication>
#include <QEntity>
#include <QSceneLoader>
#include <Qt3DWindow>

int main(int argc, char **argv)
{
    QApplication app(argc, argv);
    Qt3DExtras::Qt3DWindow *view = new Qt3DExtras::Qt3DWindow();

    Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();

    Qt3DRender::QSceneLoader *loader = new Qt3DRender::QSceneLoader(rootEntity);
    QObject::connect(loader, &Qt3DRender::QSceneLoader::statusChanged,
                     &app, [](Qt3DRender::QSceneLoader::Status s){qDebug() << s;});
    QUrl url = QUrl::fromLocalFile(":/obj/square-pot.obj");
    loader->setSource(url);

    view->setRootEntity(rootEntity);
    view->show();

    return app.exec();
}

这个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()); } } 类封装了所需的一切,包括为最常见的情况设置VLC_PLUGIN_PATH环境变量。

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