我正在尝试运行视频流的vlcj,这个我在本教程中使用的代码知道如何在视频中修复此问题他使用 JFilechooser获取了 vlcliber 路径/ EM> 但我改变它直接设置路径
第一堂课
/*
* 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)
答案 0 :(得分:8)
如果您使用的是vlcj 3.0.0,则该版本的vlcj取决于JNA的4.0.0版本。
不幸的是,Windows上的LibVLC和JNA 4.0.0的组合暴露了一个新的错误[1]。
目前在Windows上可用的唯一解决方案是:
将VLC_PLUGIN_PATH环境变量(不 Java系统属性)设置为指向包含vlc插件的目录,例如: “c:\ program files \ videolan \ vlc \ plugins”
确保在运行Java程序时当前目录是“c:\ program files \ videolan \ vlc”。
使用JNA和Platform jars的3.5.2版而不是4.0.0。
显然,您将上面的目录字符串替换为您自己磁盘上适当的内容。
这些解决方案都不是理想的。
答案 1 :(得分:0)
谢谢你,但你只是使用它运行的旧版本让事情看起来很复杂,这是应用程序的图片