RTSP

RTSP #

Real Time Streaming Protocol

默认端口:554

方法 #

一般的顺序是:

  • OPTIONS
  • DESCRIBE
  • SETUP
  • PLAY
  • TEARDOWN

OPTIONS #

请求返回服务器将接受的请求类型。

C->S:  OPTIONS rtsp://example.com/media.mp4 RTSP/1.0
       CSeq: 1
       Require: implicit-play
       Proxy-Require: gzipped-messages

S->C:  RTSP/1.0 200 OK
       CSeq: 1
       Public: DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE

DESCRIBE #

SETUP #

TEARDOWN #

PLAY #

PAUSE #


包详情 #

海康摄像头

OPTIONS rtsp://172.17.11.155:554/h264/ch1/main/av_stream RTSP/1.0
CSeq: 2
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
# OPTIONS :这个是选项,问下服务器我到底有啥本领技能?

RTSP/1.0 200 OK
CSeq: 2
Public: OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER
Date:  Tue, May 23 2017 16:08:47 GMT
# 服务器回复你,你有这么多技能:OPTIONS, DESCRIBE, PLAY, PAUSE, SETUP, TEARDOWN, SET_PARAMETER, GET_PARAMETER

DESCRIBE rtsp://172.17.11.155:554/h264/ch1/main/av_stream RTSP/1.0
CSeq: 3
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp
# DESCRIBE :我想让服务器描述一下流的情况,你用sdp的格式告诉我吧

RTSP/1.0 401 Unauthorized
CSeq: 3
WWW-Authenticate: Digest realm="1868cb21d4df", nonce="cfbaf30c677edba80dbd7f0eb1df5db6", stale="FALSE"
WWW-Authenticate: Basic realm="1868cb21d4df"
Date:  Tue, May 23 2017 16:08:47 GMT
# 服务器回答,你没有认证(用户密码),所以给你401吧

DESCRIBE rtsp://172.17.11.155:554/h264/ch1/main/av_stream RTSP/1.0
CSeq: 4
Authorization: Digest username="admin", realm="1868cb21d4df", nonce="cfbaf30c677edba80dbd7f0eb1df5db6", uri="rtsp://172.17.11.155:554/h264/ch1/main/av_stream", response="8b9d4d3e6ae627b62f430874a8c6e333"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Accept: application/sdp
# DESCRIBE :我表示不服,再上诉:让服务器描述一下流的情况,你用sdp的格式告诉我吧

RTSP/1.0 200 OK
CSeq: 4
Content-Type: application/sdp
Content-Base: rtsp://172.17.11.155:554/h264/ch1/main/av_stream/
Content-Length: 598

v=0
o=- 1495555727123750 1495555727123750 IN IP4 172.17.10.7
s=Media Presentation
e=NONE
b=AS:5050
t=0 0
a=control:rtsp://172.17.11.155:554/h264/ch1/main/av_stream/
m=video 0 RTP/AVP 96
c=IN IP4 0.0.0.0
b=AS:5000
a=recvonly
a=x-dimensions:1920,1080
a=control:rtsp://172.17.11.155:554/h264/ch1/main/av_stream/trackID=1
a=rtpmap:96 H264/90000
a=fmtp:96 profile-level-id=420029; packetization-mode=1; sprop-parameter-sets=Z00AKpWoHgCJ+WEAAAcIAAFfkAQ=,aO48gA==
a=Media_header:MEDIAINFO=494D4B48010200000400000100000000000000000000000000000000000000000000000000000000;
a=appversion:1.0
# 服务器答应了,然后把SDP发给我了
# 里面有各种信息:我看到只有一路视频,1080P的,H264编码;
# 96是视频流ID, 这符合规范,mediainfo可能是sps pps的加密信息

SETUP rtsp://172.17.11.155:554/h264/ch1/main/av_stream/trackID=1 RTSP/1.0
CSeq: 5
Authorization: Digest username="admin", realm="1868cb21d4df", nonce="cfbaf30c677edba80dbd7f0eb1df5db6", uri="rtsp://172.17.11.155:554/h264/ch1/main/av_stream/", response="a34897f9b42eb7f501d549f6fa558838"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1
# SETUP :为了透过防火墙,我想指定传输机制RTP/AVP/TCP告诉服务器

RTSP/1.0 200 OK
CSeq: 5
Session:        313720730;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=72a9bdb8;mode="play"
Date:  Tue, May 23 2017 16:08:47 GMT
# 服务器准了,并告诉你可以play了

PLAY rtsp://172.17.11.155:554/h264/ch1/main/av_stream/ RTSP/1.0
CSeq: 6
Authorization: Digest username="admin", realm="1868cb21d4df", nonce="cfbaf30c677edba80dbd7f0eb1df5db6", uri="rtsp://172.17.11.155:554/h264/ch1/main/av_stream/", response="13e073b1f7a0d1be0442491ba4613c35"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session: 313720730
Range: npt=0.000-
# PLAY :我想告诉服务器以SETUP指定的机制开始发送数据;
# 还可以用关键字Range指定play的范围

RTSP/1.0 200 OK
CSeq: 6
Session:        313720730
RTP-Info: url=rtsp://172.17.11.155:554/h264/ch1/main/av_stream/trackID=1;seq=13657;rtptime=106503066
Date:  Tue, May 23 2017 16:08:47 GMT
# 服务器很听话,给到了初始的随机序列号和随机时间戳seq=13657;rtptime=106503066

GET_PARAMETER rtsp://172.17.11.155:554/h264/ch1/main/av_stream/ RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="1868cb21d4df", nonce="cfbaf30c677edba80dbd7f0eb1df5db6", uri="rtsp://172.17.11.155:554/h264/ch1/main/av_stream/", response="5845426a0c6ce7ca7839ac9e639d7197"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session: 313720730
# GET_PARAMETER :我请求检查URL指定的演示与媒体的参数值。
# 没有实体体时,也许能用来测试用户与服务器的连通情况

$.. .`5Y.Y..r...gM.*......a......_..$....`5Z.Y..r...h.<.$....`5[.Y..r......y....$....`5\.Y..r...|....sT...e....Z&x]A....UF...8..I..O...x.4ZC/|$..
# 一堆数据?

TEARDOWN rtsp://172.17.11.155:554/h264/ch1/main/av_stream/ RTSP/1.0
CSeq: 14
Authorization: Digest username="admin", realm="1868cb21d4df", nonce="cfbaf30c677edba80dbd7f0eb1df5db6", uri="rtsp://172.17.11.155:554/h264/ch1/main/av_stream/", response="a52194fbc2c6433e1f1dbf33576a7f7c"
User-Agent: LibVLC/2.2.4 (LIVE555 Streaming Media v2016.02.22)
Session: 313720730
$..(......[.r.........l...................[.
# TEARDOWN :不玩了,就停止给定URL流发送数据,并释放相关资源

RTSP/1.0 200 OK
CSeq: 14
Session:        313720730
Date:  Tue, May 23 2017 16:15:10 GMT
# 好的,服务器说:对你这个会话Session:  313720730, 我把它干掉

参考:


参考 #


本文访问量

本站总访问量

本站总访客数