2014-01-12 60 views
2

我对vlcj努力试图运行视频流之后给错误和我是从本教程所使用的任何想法,如何解决这一问题,他得到了使用的JFileChooservlcliber路视频码 但我改变它来设置路径直接vlcj运行此代码

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) 

回答

7

如果使用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。

很明显,您用自己的磁盘上适当的内容替换上面的目录字符串。

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

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

+0

谢谢你这么多的信息的图片。我对vlcj完全陌生,并试图使用3.10.1版本。在将JNA版本更改为3.5.2后,vlcj开始工作(vlcj版本不变)。 :) – AndrewMcCoist

0

谢谢你,但你让事情看起来很复杂其实只是使用旧版本,它的工作原理,这是应用enter image description here

+0

是的你的回答正确我知道这就是为什么我喜欢你,但你真的吓到我,当我阅读你的答案,因为这个项目将成为我的大学项目,所以帮助我尽可能多地 –