VLCJ NullPointer(我只想要一个简单的跨平台java视频播放器)

时间:2012-08-09 00:24:05

标签: java video vlcj

我想制作一个简单的java应用程序来播放视频。我想让它特别播放mpeg4和mov格式。 JMF就是我的开始,我有一个可爱的工作实例。但是,不支持mov或mpeg4格式。我看过Xuggler,但看不到简单的方法让它运转起来。 VLCJ似乎很简单 - 我下载了jar文件并将它们附加到我的项目中(vlcj-2.1.0.jar,jna-3.4.0.jar,platform-3.4.0.jar,vlcj-2.1.0.jar))。我得到了示例代码并对其进行了调整(如下)。但是当我运行代码时,我得到一个java.lang.NullPointerException异常。我已经尝试调整文件名中斜杠(向前和向后)的数字和方向。似乎没什么用。请你帮忙???

import javax.swing.JFrame;
import javax.swing.SwingUtilities;
import javax.swing.JFileChooser;

import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent;
import java.lang.Object;
import uk.co.caprica.vlcj.mrl.FileMrl;

import uk.co.caprica.vlcj.binding.LibVlc;
import uk.co.caprica.vlcj.runtime.RuntimeUtil;

import com.sun.jna.Native;
import com.sun.jna.NativeLibrary;


public class TestPlayer {

  private final JFrame frame;
  private EmbeddedMediaPlayerComponent mediaPlayer;

  public static void loadLibs(){
      NativeLibrary.addSearchPath(
        RuntimeUtil.getLibVlcLibraryName(), "C:/Program Files/VideoLAN/VLC/"
     );
        Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class);
  }

  public static void main(final String[] args){
    loadLibs();   
      final String mrl = "file://C:/Test.mov";
        SwingUtilities.invokeLater(new Runnable() {
        @Override
        public void run() {
            new TestPlayer().run(mrl);
        }
    });
  }
  public TestPlayer(){
      frame = new JFrame("test VLCJ");
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      frame.setLocation(100,100);
      frame.setSize(600,400);
      frame.setVisible(true);
  }
  private void run(String mrl){
    System.out.println(mrl);
    try{
        mediaPlayer.getMediaPlayer().playMedia(mrl);
    }catch(Exception e){
        System.err.println(e.toString());
    }

  }
}

我在Windows 32位上使用VLC版本2.0.2和VLCJ 2.1.0源代码以及JDK 1.7。我希望这很简单...

1 个答案:

答案 0 :(得分:2)

看起来你正在使用mediaPlayer而没有初始化它,因此导致run()中的NullPointerException。

尝试在构造函数中初始化它。