我的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)
我该怎么办?
答案 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的推荐方法,所以请试试。