2015-04-02 114 views
0

我有這樣的代碼:無法加載庫libvlc

public class MediaPanel { 

     public static void main(final String[] args) { 
      SwingUtilities.invokeLater(new Runnable() { 
       @Override 
       public void run() { 
        chargerLibrairie(); 
        new MediaPanel(args); 
       } 
      }); 
     } 
     static void chargerLibrairie(){ String ruta="C:/VideoLAN/VLC"; 
      NativeLibrary.addSearchPath(RuntimeUtil.getLibVlcLibraryName(), ruta); 
      Native.loadLibrary(RuntimeUtil.getLibVlcLibraryName(), LibVlc.class); 

      LibXUtil.initialise(); 

     } 

     private MediaPanel(String[] args) { 
      JFrame frame = new JFrame("Tutoriel vlcj"); 
      frame.setLocation(100, 100); 
      frame.setSize(1050, 600); 
      frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      frame.setVisible(true); 

      //Créer une instance de Canvas 
      Canvas c = new Canvas(); 
      //L'arrière plan de la vidéo est noir par défaut 
      c.setBackground(Color.black); 
      JPanel p = new JPanel(); 
      p.setLayout(new BorderLayout()); 
      //La vidéo prend toute la surface 
      p.add(c, BorderLayout.CENTER); 
      frame.add(p, BorderLayout.CENTER); 

      //Créer une instance factory 
      MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(); 
      //Créer une instance lecteur média 
      EmbeddedMediaPlayer mediaPlayer = mediaPlayerFactory.newEmbeddedMediaPlayer(); 
      mediaPlayer.setVideoSurface(mediaPlayerFactory.newVideoSurface(c)); 
      //Plein écran 
      mediaPlayer.toggleFullScreen(); 
      //Cacher le curseur de la souris à l'intérieur de JFrame 
      mediaPlayer.setEnableMouseInputHandling(false); 
      //Désactiver le clavier à l'intérieur de JFrame 
      mediaPlayer.setEnableKeyInputHandling(true); 

      //Préparer le fichier 
      mediaPlayer.prepareMedia("J.mp4"); 
      //lire le fichier 
      mediaPlayer.play(); 
     } 
    } 

而且我有這樣的錯誤:

run: 
Exception in thread "AWT-EventQueue-0" java.lang.UnsatisfiedLinkError: Unable to load library 'libvlc': Native library (win32-x86-64/libvlc.dll) not found in resource path ([file:/C:/Users/Jes%c3%bas/Desktop/videoProyecto/jna-4.0.0.jar, file:/C:/Users/Jes%c3%bas/Desktop/videoProyecto/jna-platform-4.0.0.jar, file:/C:/Users/Jes%c3%bas/Desktop/videoProyecto/vlcj-2.4.0.jar, file:/C:/Users/Jes%c3%bas/Documents/NetBeansProjects/edicionVideo/build/classes/]) 

看來這個目錄是正確的,但我認爲這不加載來自vlc的圖書館。我已經確保這些庫與我的電腦具有相同的體系結構,64位,並且我不知道問題所在。

+0

也許這將有助於:http://stackoverflow.com/questions/8608117/vlcj-unable-to-load-library-libvlc-in-64bit-os?rq=1 – LisaMM 2015-04-02 08:25:07

+1

我已經看過這個鏈接,但它沒有幫助我。謝謝各位 – 2015-04-02 08:34:06

+2

幾點意見...... 1.不要在Windows上使用LibX11.initialise()。 2.您的mediaPlayer實例將超出範圍並在您的構造函數退出後隨機進行垃圾回收,您必須保留引用固定。 3.爲什麼你使用古代vlcj 2.4.0?請使用更新的版本。 4.您是否100%確信您的JVM和VLC安裝都是相同的CPU架構(32位和64位)。 – caprica 2015-04-02 18:33:35

回答

0

有時候這個問題是由於VLC和JRE體系結構的不兼容性造成的。

您可以使用下面的代碼檢查JRE架構:

public class JavaApplication12 { 
    public static void main(String[] args) { 
     System.out.println(System.getProperty("sun.arch.data.model")); 
    } 
} 

如果VLC是32位的,則JRE必須是32位也一樣,如果VLC是64那麼JRE必須是64了。