2012-02-07 5 views
1

Я пытаюсь запустить их учебный код для подключения к потоку rtsp с веб-камеры и отображения фида на JFrame. Я изменил их пример кода, чтобы сделать простой клиент rtsp viewer. Когда я укажу расположение каталога в методе playMedia, я могу воспроизводить mp3, mpegs, avi просто отлично.Проблема с java vlcj 1.2.2 Пример клиента RTSP (Mac OSX 10.6)

например. mediaPlayerComponent.getMediaPlayer(). playMedia ("/ Volumes/dl/The Lord Of The Rings - Две башни/Властелин колец - Две башни - Disc 1.mp4"); // works

Когда я вхожу в рабочий RTSP mrl, он ломается. Он работает в автономном приложении VLC, работающем под управлением live555. С помощью этого кода клиента я просто получаю черный экран.

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 /». Не спрашивайте меня, почему амперсанд необходим, если он работает; Я также считаю, что это очень странно ... –

+0

Спасибо за ответ. Я пробовал несколько стабильных построений выпусков vlc для 64-разрядных версий, включая последние. Этот код работает, когда я скомпилировал его в Windows, когда я его выполнил с -Djna.library.path = "xxxx \ VideoLan \ VLC". Я тестировал этот mrl в самом приложении VLC. Я подозреваю, что это может быть проблемой vlcj. – user1195563

+0

Вы протестировали VLCJ на Java JVM в 64-разрядной версии при использовании 64-разрядной версии libVLC? В противном случае вам нужно использовать 32-разрядную версию для всего ... – ecle

ответ

0

Hi Это хорошо работает для меня на Snow Leopard.

Для MRL вы должны указать, как @ee сказал.