2014-05-13 33 views
3

我尝试将RTSP服务器中的视频流打开为JAVA应用程序。首先,我试图运行这个例子:使用vlcj运行示例RTSP示例(JAVA)

package uk.co.caprica.vlcj.test.streaming; 

import uk.co.caprica.vlcj.player.MediaPlayerFactory; 
import uk.co.caprica.vlcj.player.headless.HeadlessMediaPlayer; 
import uk.co.caprica.vlcj.test.VlcjTest; 

/** 
* An example of how to stream a media file using RTSP. 
* <p> 
* The client specifies an MRL of <code>rtsp://@127.0.0.1:5555/demo</code> 
*/ 
public class StreamRtsp extends VlcjTest { 

    public static void main(String[] args) throws Exception { 
    if(args.length != 1) { 
     System.out.println("Specify a single MRL to stream"); 
     System.exit(1); 
    } 

    String media = args[0]; 
    String options = formatRtspStream("127.0.0.1", 5555, "demo"); 

    System.out.println("Streaming '" + media + "' to '" + options + "'"); 

    MediaPlayerFactory mediaPlayerFactory = new MediaPlayerFactory(args); 
    HeadlessMediaPlayer mediaPlayer = mediaPlayerFactory.newHeadlessMediaPlayer(); 
    mediaPlayer.playMedia(media, 
     options, 
     ":no-sout-rtp-sap", 
     ":no-sout-standard-sap", 
     ":sout-all", 
     ":sout-keep" 
    ); 

    // Don't exit 
    Thread.currentThread().join(); 
    } 

    private static String formatRtspStream(String serverAddress, int serverPort, String id) { 
    StringBuilder sb = new StringBuilder(60); 
    sb.append(":sout=#rtp{sdp=rtsp://@"); 
    sb.append(serverAddress); 
    sb.append(':'); 
    sb.append(serverPort); 
    sb.append('/'); 
    sb.append(id); 
    sb.append("}"); 
    return sb.toString(); 
    } 
} 

但我一直相同的结果: 指定一个MRL以流

http://i.stack.imgur.com/8iX0O.png

即使我删除此节:

if(args.length != 1) { 
      System.out.println("Specify a single MRL to stream"); 
      System.exit(1); 
     } 

你能帮助我吗?

回答

1

听起来你没有实际传递参数的程序,它从该行预计:

String media = args[0]; 

如果你不希望传递一个参数,只是将其更改为:

String media = "(location of rtsp to stream)"; 

...并删除上面的if语句,因为你已经有了。

+1

谢谢。问题解决了! – user3634476