RTSP:无法获取会话标识

时间:2016-08-28 14:22:03

标签: python streaming rtsp onvif

我正在尝试使用python脚本控制ip cam(我可以看到使用VLC或mplayer的流)。

收到OPTIONS和DESCRIBE信息后,我试着给每个SETUP一个错误:

SETUP rtsp://192.168.0.41:554/xxxxxx RTSP/1.0 
CSeq: 3
Transport: RTP/AVP/UDP;unicast;client_port=3056-3057

RTSP/1.0 400 Bad Request
Allow: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER,  SET_PARAMETER,USER_CMD_SET

所以我从未收到会话识别。

也许问题出在运输线上,但我认为这是因为我不知道应该用什么代替xxxxxxx(我尝试过google了很多但没有结果)

以下是OPTIONS和DESCRIBE的输出:

    OPTIONS rtsp://192.168.0.41:554 RTSP/1.0 
 CSeq: 1

RTSP/1.0 200 OK
CSeq: 1
Public: OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER,USER_CMD_SET


---------------------------------
DESCRIBE rtsp://192.168.0.41:554/onvif2 RTSP/1.0 
 CSeq: 2

RTSP/1.0 200 OK
CSeq: 2
Content-Type: application/sdp
Content-Length: 360

v=0
o=- 1421069297525233 1 IN IP4 192.168.0.41
s=H.264 Video, RtspServer_0.0.0.2
t=0 0
a=tool:RtspServer_0.0.0.2
a=type:broadcast
a=control:*
a=range:npt=0-
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:500
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=42001F;sprop-parameter-sets=Z0IAH5WoFAFuQA==,aM48gA==
a=control:track1

*代表什么?

什么是" track1"?

(注意:如果我检查onvif1,那是由cam发送的其他流,结果是相同的,但是使用track2,这意味着服务器应答应该是合适的)

2 个答案:

答案 0 :(得分:0)

来自RTSP rfc https://www.ietf.org/rfc/rfc2326.txt的示例:

S->C  RTSP/1.0 200 OK
      CSeq: 1
      Content-base: rtsp://foo.com/test.wav/
      Content-type: application/sdp
      Content-length: 48

      v=0
      o=- 872653257 872653257 IN IP4 172.16.2.187
      s=mu-law wave file
      i=audio test
      t=0 0
      m=audio 0 RTP/AVP 0
      a=control:streamid=0

C->S  SETUP rtsp://foo.com/test.wav/streamid=0 RTSP/1.0
      Transport: RTP/AVP/UDP;unicast;
                 client_port=6970-6971;mode=play
      CSeq: 2

您只需将其附加到SETUP请求的网址即可。

我不确定a =控制:*意味着什么

答案 1 :(得分:0)

最后我发现了问题:在最后一个python代码行中缺少 \ r \ n

错误:

Transport: RTP/AVP/UDP;unicast;client_port=52318-52319

正确的:

Transport: RTP/AVP/UDP;unicast;client_port=52318-52319\r\n

现在可行。