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

时间:2014-01-12 17:00:38

标签: java vlcj

我正在尝试运行视频流的vlcj,这个我在本教程中使用的代码知道如何在视频中修复此问题他使用 JFilechooser获取了 vlcliber 路径/ EM> 但我改变它直接设置路径

lectur video

第一堂课

    /*
 * 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();
    }
}

第二课

/*
 * 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);
        }
    }

错误消息

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)

2 个答案:

答案 0 :(得分: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 jars的3.5.2版而不是4.0.0。

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

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

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

答案 1 :(得分:0)

谢谢你,但你只是使用它运行的旧版本让事情看起来很复杂,这是应用程序的图片enter image description here