|
网站内容均来自网络,本站只提供信息平台,如有侵权请联系删除,谢谢!
《音视频应用开发系列文章目录》
RTSP在音视频传输中的位置
RTSP协议是一个应用层协议,主要针对媒体流传输过程的控制和配置,提供OPTIONS,DESCRIBE,SETUP,TEARDOWN,PLAY,GET_PARAMETER,SET_PARAMETER等操作命令。
下图是客户端请求rtsp服务器音视频数据的大致过程
client通过RTSP协议对远程服务器发起连接请求,连接成功后server建立RTP/RTCP通道和client进行交互。rtsp是基于TCP的连接,而RTP/RTCP可以是TCP也可以的UDP。
RTSP服务器大致搭建过程
1.建立TCP服务器用于监听RTSP-CLIENT的连接
2.当有新连接是,创建RTSP接收任务
3.RTSP接收任务开始处理RTSP命令
3.1.OPTIONS:反馈当前支持的RTSP命令
3.2.DESCRIBE:返回SDP信息(音频,视频,音视频描述)
3.3.SETUP:RTP/UDP->创建RTP/RTCP通道UDP监听端口,RTP/TCP->和RTSP共用
3.4.PLAY:创建RTCP接收线任务,RTP发送任务
3.5.TEARDOWN:关闭连接和任务
一个具体的RTSP会话实例[VLC RTSP SERVER]
注:红色为VLC,蓝色为RTSP SERVER。
OPTIONS rtsp://192.168.1.88:554/sub RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
【说明】首先VLC发出OPTIONS请求
RTSP/1.0 200 OK
CSeq: 2
Date: Wed, Sep 25 2019 11:05:10 GMT
OPTIONS,DESCRIBE,SETUP,TEARDOWN,PLAY,GET_PARAMETER,SET_PARAMETER
【说明】SERVER回复支持的功能
DESCRIBE rtsp://192.168.1.88:554/sub RTSP/1.0
CSeq: 4
Authorization: Digest username="admin", realm="IPC", nonce="9e5b97ab9b1c66f2c03a8e5ff1cd4e01", uri="rtsp://192.168.1.88:554/sub", response="f287d50d966ee352514fd717a33a5e79"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp
【说明】VLC发起SDP请求
RTSP/1.0 200 OK
CSeq: 4
Date: Wed, Sep 25 2019 11:05:10 GMT
Content-Base: rtsp://192.168.1.88:554/sub
Content-Type: application/sdp
Content-Length: 238
v=0
o=username 1853907398 1 IN IP4
s=sub
c=IN IP4 0.0.0.0
t=0 0
a=range:npt=0-
a=sendonly
a=control:*
m=video 0 RTP/AVP 96
a=rtpmap:96 H264/90000
a=control:track0
m=audio 0 RTP/AVP 8
a=rtpmap:8 PCMA/8000/1
a=control:track1
【说明】SERVER返回SDP(服务器在此处设计的时候就很关键了,就是返回正确的SDP。只有视频的时候只需要返回video描述,只有音频返回audio描述,两个流都有则要两个描述,以track id区分,后面VLC SETUP的时候会SETUP两次,服务器就需要建立2个session,但是不管有几个流几个session,同一个RTSP client只有一个session id。)
SETUP rtsp://192.168.1.88:554/sub/track0 RTSP/1.0
CSeq: 5
Authorization: Digest username="admin", realm="IPC", nonce="9e5b97ab9b1c66f2c03a8e5ff1cd4e01", uri="rtsp://192.168.1.88:554/sub", response="f9240e0c9abe4a22410eace51262b045"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55822-55823
【说明】VLC发起第一个SETUP,track id为track0为视频流(可以由服务器自己定义),Transport为RTP/AVP表示VLC会以UDP来接收视频流,RTP/RTCP的UDP会话端口为client_port=55822-55823。
RTSP/1.0 200 OK
CSeq: 5
Date: Wed, Sep 25 2019 11:05:10 GMT
Transport: RTP/AVP;unicast;client_port=55822-55823;server_port=29746-29747;destination=192.168.9.97
Session: 4EA75CE8
【说明】服务器需要返回和VLC的RTP/RTCP的UDP端口对接的服务器的RTP/RTCP端口,并且建立本次连接的Session ID(Session: 4EA75CE8),每个连接有且只有一个Session ID。
SETUP rtsp://192.168.1.88:554/sub/track1 RTSP/1.0
CSeq: 6
Authorization: Digest username="admin", realm="IPC", nonce="9e5b97ab9b1c66f2c03a8e5ff1cd4e01", uri="rtsp://192.168.1.88:554/sub", response="f9240e0c9abe4a22410eace51262b045"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55824-55825
Session: 4EA75CE8
【说明】VLC发起第二个SETUP,track id为track1为音频流(可以由服务器自己定义),Transport为RTP/AVP表示VLC会以UDP来接收视频流,RTP/RTCP的UDP会话端口为client_port=55824-55825。Session ID为同一份。
RTSP/1.0 200 OK
CSeq: 6
Date: Wed, Sep 25 2019 11:05:10 GMT
Transport: RTP/AVP;unicast;client_port=55824-55825;server_port=33306-33307;destination=192.168.9.97
Session: 4EA75CE8
【说明】服务器需要返回和VLC音频流对接的服务器的RTP/RTCP的UDP端口。(RTP/RTCP由UDP传输时,每个流对应2个端口,不能重复。)
PLAY rtsp://192.168.1.88:554/sub RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="IPC", nonce="9e5b97ab9b1c66f2c03a8e5ff1cd4e01", uri="rtsp://192.168.1.88:554/sub", response="ef7a23e129ed64e1748e3639a2c49d67"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Session: 4EA75CE8
Range: npt=0.000-
【说明】VLC发起播放请求
RTSP/1.0 200 OK
CSeq: 7
Date: Wed, Sep 25 2019 11:05:10 GMT
Range: npt=0.000-
Session: 4EA75CE8
RTP-Info: url=rtsp://192.168.1.88:554/sub;seq=7;rtptime=0
【说明】SERVER回复OK并开始音视频流的RTP发送。
TEARDOWN rtsp://192.168.1.88:554/sub RTSP/1.0
CSeq: 8
Authorization: Digest username="admin", realm="IPC", nonce="9e5b97ab9b1c66f2c03a8e5ff1cd4e01", uri="rtsp://192.168.1.88:554/sub", response="1e8a339570318436f383209cc1ffb0d3"
User-Agent: LibVLC/3.0.8 (LIVE555 Streaming Media v2016.11.28)
Session: 4EA75CE8
【说明】VLC发出退出请求
RTSP/1.0 200 OK
CSeq: 8
Date: Wed, Sep 25 2019 11:05:14 GMT
Session: 4EA75CE8
【说明】SERVER关闭对应的socket通道和RTP/RTCP任务
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
免责声明
1. 本论坛所提供的信息均来自网络,本网站只提供平台服务,所有账号发表的言论与本网站无关。
2. 其他单位或个人在使用、转载或引用本文时,必须事先获得该帖子作者和本人的同意。
3. 本帖部分内容转载自其他媒体,但并不代表本人赞同其观点和对其真实性负责。
4. 如有侵权,请立即联系,本网站将及时删除相关内容。
|