【问题标题】:VLCJ NullPointer (I just want a simple cross-platform java video player)VLCJ NullPointer(我只想要一个简单的跨平台java视频播放器)
【发布时间】:2013-01-15 01:37:26
【问题描述】:

我想做一个简单的 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。我希望这很简单......

【问题讨论】:

    标签: java video vlcj


    【解决方案1】:

    看起来您在使用 mediaPlayer 时从未对其进行初始化,从而导致 run() 中出现 NullPointerException。

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

    【讨论】:

    • 非常感谢!那解决了它。 mediaPlayer = new EmbeddedMediaPlayerComponent();和 frame.setContentPane(mediaPlayer);需要。
    • Extension - 有没有人看过一些简单控件的代码,比如 JMF(播放/暂停、定时滑块、可能是声音,甚至是打开新媒体的菜单)?我讨厌重新发明轮子!
    猜你喜欢
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2011-03-11
    相关资源
    最近更新 更多