2012-03-24 12 views
3

私はRTSPによってメディアデータを与えることができるIPカメラを持っています。ストリームデータを取得するRTSP

メディアデータを取得するためのアプリケーションを開発します。

私はC++とQt3を使用します。

私はソケットを作成します。それをポート554上の私のデバイスIPに接続してください。

私は最初のクエリ

SETUP rtsp://192.168.4.160/ufirststream RTSP/1.0\r\n 
CSeq: 1\r\n 
Transport: RTP/AVP; client_port=554\r\n\r\n

を行うと、答えを得る:

 
RTSP/1.0 200 OK 
CSeq: 1 
Date: Sat, Mar 24 2012 17:24:59 GMT 
Transport: RTP/AVP;unicast;destination=192.168.4.186;source=192.168.4.160;client_port=0-1;server_port=2000-2001 
Session: 413F4DDB 

私はgettinのセッション値のためにそれを解析し、次のクエリを実行します。

 
PLAY rtsp://192.168.4.160/ufirststream RTSP/1.0 
CSeq: 1 
Session: 413F4DDB 

を、サーバが語ります:

 
RTSP/1.0 200 OK 
CSeq: 1 
Date: Sat, Mar 24 2012 17:25:02 GMT 
Session: 413F4DDB 
RTP-Info: url=rtsp://192.168.4.160/ufirststream/track1;seq=6716;rtptime=406936711 

私はどのようにメディアデータを取得できますか?私はPLAYメソッドがサーバーにストリームを渡すと思っていましたが、それは私にrtspやその他の情報のURLを与えてくれるものだと思っていました...

私はカメラからのバイナリストリームが必要です。 ??

答えて

3

SETUPTransportヘッダーのヘッダーは、ストリームを送信するために使用するプロトコルと、クライアントがリスンするポートを示します(client_port)。

2つの連続するUDPポートを開き、その範囲を5532の代わりにclient_port=port1-port2としてください。これら2つのポートは、RTPおよびRTCPストリーム(ビデオおよび制御データ)に使用されます。

さらに、RTPポート番号は偶数で、RTCPポートは次の奇数である必要があります(that questionを参照してください)。

+0

以前に設定したポート1にバインドされたサーバーソケットを作成する必要がありますか?または、クライアントソケットを作成し、クライアントport1を使用してサーバーに接続する必要がありますか? – mmmaaak

+0

@mmmaaakサーバソケットではなく、 'QSocketDevice :: Datagram'タイプの' QSocketDevice'です。サーバーに接続する必要はありません。ソケットをバインドしてUDPポートを解放するだけです。 – alexisdm

関連する問題