2012-02-07 70 views
1

我試圖讓他們的教程代碼運行從我的攝像頭連接到rtsp流並在JFrame上顯示提要。我修改了他們的示例代碼來創建一個簡單的客戶端rtsp查看器。當我在playMedia方法中指定目錄位置時,我可以播放mp3,mpegs,avi等等。Java vlcj問題1.2.2 RTSP客戶端示例(Mac OSX 10.6)

例如mediaPlayerComponent.getMediaPlayer()。playMedia(「/ Volumes/dl /指環王 - 雙塔/指環王 - 雙塔 - Disc 1.mp4」); //作品

當我輸入工作的RTSP mrl時,它會中斷。它適用於運行live555的VLC獨立應用程序。有了這個客戶端代碼,我只是得到一個黑屏。

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

    import com.sun.jna.Native; 
    import com.sun.jna.NativeLibrary; 
    import uk.co.caprica.vlcj.binding.LibVlc; 
    import uk.co.caprica.vlcj.component.EmbeddedMediaPlayerComponent; 
    import uk.co.caprica.vlcj.runtime.RuntimeUtil; 
    import javax.swing.SwingUtilities; 
    import com.sun.jna.NativeLibrary; 
    import javax.swing.JFrame; 
    import uk.co.caprica.vlcj.mrl.RtspMrl; 

    public class Tutorial1B { 

     private final EmbeddedMediaPlayerComponent mediaPlayerComponent; 
     public static void main(String[] args) { 

      if (com.sun.jna.Platform.isMac()) { 
       final String jnaLibraryPath = System.getProperty("jna.library.path"); 
       final StringBuilder newJnaLibraryPath = new StringBuilder(jnaLibraryPath != null ? (jnaLibraryPath + ":") : ""); 
       newJnaLibraryPath.append("/Users/Huy/Downloads/vlc-vlckit-x86_64-20120131-2049/VLCKit/VLCKit.framework/Versions/A/lib"); 
       System.setProperty("jna.library.path", newJnaLibraryPath.toString()); 
      } 



      SwingUtilities.invokeLater(new Runnable() { 
      @Override 
      public void run() { 
       new Tutorial1B(); 
      } 
      }); 
      } 

    private Tutorial1B() { 
     JFrame frame = new JFrame("HUY vlcj"); 

     mediaPlayerComponent = new EmbeddedMediaPlayerComponent(); 

     frame.setContentPane(mediaPlayerComponent); 

     frame.setLocation(100, 100); 
     frame.setSize(1050, 600); 
     frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
     frame.setVisible(true); 
     String mrl = new RtspMrl().host("192.168.0.191") 
         .port(554) 
         .path("/live/ch01_0/") 
         .value();  

    //mediaPlayerComponent.getMediaPlayer().playMedia("/Volumes/dl/The Lord Of The Rings - The Two Towers/The Lord Of The Rings - The Two Towers - Disc 1.mp4"); 
     mediaPlayerComponent.getMediaPlayer().playMedia(mrl); 
     }  
    } 

我出來的想法,我搜索了這個網站和他們的示例教程無濟於事。謝謝您的幫助!

+0

你用什麼libVLC版本綁定到VLCJ 1.2.2?此外,預期的MRL字符串是什麼:它是「rtsp://192.168.0.191:554/live/ch01_0 /」?也許,你可以試試「rtsp://@192.168.0.191:554/live/ch01_0 /」。不要問我爲什麼需要使用&符號;我也覺得這很奇怪...... – 2012-02-08 11:05:40

+0

感謝您的回覆。我嘗試了多個穩定版本的64位版本,包括最新的vlc版本。當我使用-Djna.library.path =「xxxx \ VideoLan \ VLC」執行它時,此代碼在Windows中編譯時起作用。我已經在VLC應用程序中測試了這個mrl。我懷疑這可能是一個vlcj問題。 – user1195563 2012-02-08 16:32:22

+0

當您使用libVLC 64位版本時,是否測試過在64位Java JVM上運行的VLCJ?否則,你必須使用32位版本的一切... – ecle 2012-02-09 02:21:31

回答

0

嗨它在雪豹上運行得很好。

對於MRL,您必須指定爲@ee所說的。