2012-08-09 36 views
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異常。我試着調整文件名中斜線(向前和向後)的數字和方向。似乎沒有任何工作。請你能幫忙嗎?VLCJ NullPointer(我只想要一個簡單的跨平臺java視頻播放器)

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。我希望這是簡單的...

回答

2

它看起來像你使用mediaPlayer沒有初始化它,因此在run()導致NullPointerException。

嘗試在構造函數中初始化它。

+0

非常感謝!這解決了它。 mediaPlayer = new EmbeddedMediaPlayerComponent();和frame.setContentPane(mediaPlayer);需要。 – user1505631 2012-08-09 00:38:36

+0

擴展名 - 有沒有人看過一些簡單的控件,如JMF(播放/暫停,用於計時的滑塊,可能是聲音,甚至用於打開新媒體的菜單)的代碼?我討厭重塑車輪! – user1505631 2012-08-09 01:24:18