0

ビデオを再生するための簡単な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());
    }

  }
}

Windows32ビットでVLCバージョン2.0.2とVLCJ2.1.0ソースおよびJDK1.7を使用しています。シンプルなものだといいのですが...

4

1 に答える 1

2

mediaPlayer初期化せずに使用しているようです。そのため、でNullPointerExceptionが発生しrun()ます。

コンストラクターで初期化してみてください。

于 2012-08-09T00:31:31.800 に答える