vlcj在运行此代码后给出错误

iss*_*lah 2 java vlcj

我正在努力尝试运行视频流的vlcj,这个我在本教程中使用的代码如何解决这个问题在视频中他使用JFilechooser得到了vlcliber路径, 但我改变它直接设置路径

lectur视频

第一堂课

    /*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package video;

import java.io.File;
import javax.swing.JFileChooser;


/**
 *
 * @author isslam
 */
public class start {
    private static final JFileChooser ourFileSelector = new JFileChooser();

    public static void main(String[] args){
        String vlcPath="C:\\Program Files\\VideoLAN\\VLC";
        String mediaPath="";
        File ourFile;


        ourFileSelector.setFileSelectionMode(JFileChooser.FILES_ONLY);
        ourFileSelector.showSaveDialog(null);
        ourFile = ourFileSelector.getSelectedFile();
        mediaPath = ourFile.getAbsolutePath();
        new Tutorial2A(vlcPath,mediaPath).run();
    }
}
Run Code Online (Sandbox Code Playgroud)

第二节课

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package video;

/**
 *
 * @author isslam
 */
import com.sun.jna.NativeLibrary;
import javax.swing.JFrame;
import uk.co.caprica.vlcj.component.EmbeddedMediaListPlayerComponent;
import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

    public class Tutorial2A {
        private final JFrame ourFrame = new JFrame();
        private final EmbeddedMediaPlayerComponent ourMediaPlayer;
        private String mediaPath="";



        Tutorial2A(String vlcPath,String mediaURL){
        this.mediaPath = mediaURL;
        NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(),vlcPath);
        ourMediaPlayer = new EmbeddedMediaListPlayerComponent();
        ourFrame.setContentPane(ourMediaPlayer);
        ourFrame.setSize(500, 500);
        ourFrame.setVisible(true);
        ourFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

        }
        public void run(){
        ourMediaPlayer.getMediaPlayer().playMedia(mediaPath);
        }
    }
Run Code Online (Sandbox Code Playgroud)

错误信息

Exception in thread "main" java.lang.RuntimeException: Failed to initialise libvlc.

This is most often caused either by an invalid vlc option begin passed when creating a MediaPlayerFactory or by libvlc being unable to locate the required plugins.

If libvlc is unable to locate the required plugins the instructions below may help:

In the text below <libvlc-path> represents the name of the directory containing "libvlc.dll" and "libvlccore.dll" and <plugins-path> represents the name of the directory containing the vlc plugins...

For libvlc to function correctly the vlc plugins must be available, there are a number of different ways to achieve this:
 1. Make sure the plugins are installed in the "<libvlc-path>/plugins" directory, this should be the case with a normal vlc installation.
 2. Set the VLC_PLUGIN_PATH operating system environment variable to point to "<plugins-path>".

More information may be available in the log, specify -Dvlcj.log=DEBUG on the command-line when starting your application.


    at uk.co.caprica.vlcj.player.MediaPlayerFactory.<init>(MediaPlayerFactory.java:279)
    at uk.co.caprica.vlcj.player.MediaPlayerFactory.<init>(MediaPlayerFactory.java:236)
    at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.onGetMediaPlayerFactory(EmbeddedMediaPlayerComponent.java:278)
    at uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent.<init>(EmbeddedMediaPlayerComponent.java:168)
    at uk.co.caprica.vlcj.component.EmbeddedMediaListPlayerComponent.<init>(EmbeddedMediaListPlayerComponent.java:50)
    at video.Tutorial2A.<init>(Tutorial2A.java:29)
    at video.start.main(start.java:30)
Java Result: 1
BUILD SUCCESSFUL (total time: 19 seconds)
Run Code Online (Sandbox Code Playgroud)

cap*_*ica 8

如果您使用的是vlcj 3.0.0,则该版本的vlcj取决于JNA的4.0.0版.

不幸的是,在Windows上LibVLC和JNA 4.0.0的组合暴露了一个新的错误[1].

目前在Windows上可用的唯一解决方案是:

  1. 将VLC_PLUGIN_PATH环境变量(不是 Java系统属性)设置为指向包含vlc插件的目录,例如"c:\ program files\videolan\vlc\plugins"

  2. 确保在运行Java程序时当前目录为"c:\ program files\videolan\vlc".

  3. 使用JNA和Platform jar的版本3.5.2而不是4.0.0.

显然,您将上面的目录字符串替换为您自己磁盘上适当的内容.

这些解决方案都不是理想的.

[1] https://github.com/caprica/vlcj/issues/226