Rtsp协议包含两块,第一部分是信令交互,这一部分建立在tcp协议的基础之上,另一部分是流媒体数据,rtp传输,既可以建立在tcp协议基础之上,也可以建立在udp协议的基础之上。

本章主要讲解一下rtsp信令这一部分的交互流程。

第一步OPTIONS,查看服务支持哪些命令

请求:

OPTIONS rtsp://192.168.150.129:8554/H264 RTSP/1.0
CSeq: 2
User-Agent: LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)

应答:

RTSP/1.0 200 OK
Server: VLC/3.0.3
Content-Length: 0
Cseq: 2
Public: DESCRIBE,SETUP,TEARDOWN,PLAY,PAUSE,GET_PARAMETER

第二步DESCRIBE,查看服务端sdp支持情况

请求:

DESCRIBE rtsp://192.168.150.129:8554/H264 RTSP/1.0
CSeq: 3
User-Agent: LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)
Accept: application/sdp

应答

RTSP/1.0 200 OK
Server: VLC/3.0.3
Date: Sat, 01 Sep 2018 04:38:33 GMT
Content-Type: application/sdp
Content-Base: rtsp://192.168.150.129:8554/H264
Content-Length: 578
Cache-Control: no-cache
Cseq: 3v=0
o=- 16083645413441119698 16083645413441119698 IN IP4 WIN-NJUKDS19FLI
s=Unnamed
i=N/A
c=IN IP4 0.0.0.0
t=0 0
a=tool:vlc 3.0.3
a=recvonly
a=type:broadcast
a=charset:UTF-8
a=control:rtsp://192.168.150.129:8554/H264
m=audio 0 RTP/AVP 14
b=AS:128
b=RR:0
a=rtpmap:14 MPA/90000/2
a=control:rtsp://192.168.150.129:8554/H264/trackID=0
m=video 0 RTP/AVP 96
b=RR:0
a=rtpmap:96 H264/90000
a=fmtp:96 packetization-mode=1;profile-level-id=64001f;sprop-parameter-sets=Z2QAH6zZQFAFuwEQAAADABAAAAMDKPGDGWA=,aOvjyyLA;
a=control:rtsp://192.168.150.129:8554/H264/trackID=1

这里的重点:

m=audio 0 RTP/AVP 14
b=AS:128
b=RR:0
a=rtpmap:14 MPA/90000/2
a=control:rtsp://192.168.150.129:8554/H264/trackID=0

说明服务端支持音频方式,类型MPA  采样率90000  通道数2 对于的rtp的pt 填写值为14 RTP/AVP说支持rtp协议,UDP方式。

最后的a=control:rtsp://192.168.150.129:8554/H264/trackID=0 是在setup命令中需要使用的。

m=video 0 RTP/AVP 96
b=RR:0
a=rtpmap:96 H264/90000
a=fmtp:96packetization-mode=1;profile-level-id=64001f;sprop-parameter-sets=Z2QAH6zZQFAFuwEQAAADABAAAAMDKPGDGWA=,aOvjyyLA;
a=control:rtsp://192.168.150.129:8554/H264/trackID=1

说明服务端支持视频方式,类型为H264,采样率90000 ,pt值为96,最后的a页视setup命令中需要使用的。

第三步SETUP,

启动媒体请求 UDP方式

请求音频数据

SETUP rtsp://192.168.150.129:8554/H264/trackID=0 RTSP/1.0
CSeq: 5
User-Agent: LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55220-55221

transport里面的RTP/AVP说明是UDP方式发送媒体流,client_port=55220-55221,表示流媒体接收端口55220,55221为rtcp接受端口,

setup 后面的url为前面sdp应答的音频的的url

答音频请求

RTSP/1.0 200 OK
Server: VLC/3.0.3
Date: Sat, 01 Sep 2018 04:38:34 GMT
Transport: RTP/AVP/UDP;unicast;client_port=55220-55221;server_port=54235-54236;ssrc=68D48D51;mode=play
Session: 81d2286eeee8dc56;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 5

transport里面的server_port=54235-54236 标识发送媒体流的端口为54235 发送rtcp端口为54236,

session为本次会话的标识,后面的play 和setup 都需要带有这字段,ssrc为rtp包里面ssrc的值

视频流程一样

请求视频数据

SETUP rtsp://192.168.150.129:8554/H264/trackID=1 RTSP/1.0
CSeq: 7
User-Agent: LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)
Transport: RTP/AVP;unicast;client_port=55222-55223
Session: 81d2286eeee8dc56

应答视频请求:

RTSP/1.0 200 OK
Server: VLC/3.0.3
Date: Sat, 01 Sep 2018 04:38:34 GMT
Transport: RTP/AVP/UDP;unicast;client_port=55222-55223;server_port=54236-54237;ssrc=C470E2F0;mode=play
Session: 81d2286eeee8dc56;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 7

启动媒体请求 TCP方式:

请求视频:

SETUP rtsp://10.10.14.168:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp/trackID=2?real_stream RTSP/1.0
CSeq: 7
Authorization: Digest username="admin", realm="IP Camera(C3459)", nonce="7c4e0298a2d0f792ed11e284ee0e2300", uri="rtsp://10.10.14.168:554/user=admin_password=tlJwpbo6_channel=1_stream=0.sdp/", response="5a987d357fb858e636f765e37dd6b0a3"
User-Agent: LibVLC/2.1.0 (LIVE555 Streaming Media v2011.12.23)
Transport: RTP/AVP/TCP;unicast;interleaved=0-1RTSP/1.0 200 OK
CSeq: 7
Session:       1931661604;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=0-1;ssrc=1855e319;mode="play"
Date:  Tue, Sep 04 2018 14:45:00 GMT

请求音频:

SETUP rtsp://10.10.14.168:554/Streaming/Channels/101/trackID=2 RTSP/1.0
CSeq: 8
Authorization: Digest username="admin", realm="IP Camera(C3459)", nonce="9a7fb020dcf4be47cc43bf1f0ecf0cc0", uri="rtsp://10.10.14.168:554/Streaming/Channels/101/", response="34e71f4a77e64a15b65e5ef5304cc759"
User-Agent: LibVLC/2.2.1 (LIVE555 Streaming Media v2014.07.25)
Transport: RTP/AVP/TCP;unicast;interleaved=2-3
Session: 1641687743RTSP/1.0 200 OK
CSeq: 8
Session:       1641687743;timeout=60
Transport: RTP/AVP/TCP;unicast;interleaved=2-3;ssrc=27ebd3e5;mode="play"
Date:  Tue, Sep 04 2018 14:50:59 GMT

第四步PLAY,让后台开始发送媒体流

请求:

PLAY rtsp://192.168.150.129:8554/H264 RTSP/1.0
CSeq: 8
User-Agent: LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)
Session: 81d2286eeee8dc56
Range: npt=0.000-

应答

RTSP/1.0 200 OK
Server: VLC/3.0.3
Date: Sat, 01 Sep 2018 04:38:34 GMT
RTP-Info: url=rtsp://192.168.150.129:8554/H264/trackID=0;seq=44225;rtptime=26995590, url=rtsp://192.168.150.129:8554/H264/trackID=1;seq=48797;rtptime=26995590
Range: npt=123.437000-
Session: 81d2286eeee8dc56;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 8

************大华的应答居然是这样子的*************************

PLAY rtsp://10.10.14.162:554/cam/realmonitor?channel=1&subtype=0&unicast=true&proto=Onvif RTSP/1.0
Session: 234447372275
CSeq: 5RTSP/1.0 200 OK
Server: Rtsp Server/2.0
CSeq: 5
Session: 234447372275
RTP-Info: url=trackID=0;seq=59454;rtptime=1291528915;ssrc=48b42fb1,url=trackID=1;seq=6089;rtptime=165528883;ssrc=1ca16dac
Range: npt=0.000000-

注意看RTP-Info的url没有写请求的url,而是直接写了一个trackId,日了,这里的解析需要再优化一下,不能拿Url去匹配。

第五步,TEARDOWN 结束回话

请求:

TEARDOWN rtsp://192.168.150.129:8554/H264 RTSP/1.0
CSeq: 9
User-Agent: LibVLC/3.0.2 (LIVE555 Streaming Media v2016.11.28)
Session: 81d2286eeee8dc56

应答:

RTSP/1.0 200 OK
Server: VLC/3.0.3
Date: Sat, 01 Sep 2018 04:38:41 GMT
Session: 81d2286eeee8dc56;timeout=60
Content-Length: 0
Cache-Control: no-cache
Cseq: 9

Rtsp之信令交互流程相关推荐

  1. rtsp摘要认证协议流程

    1. rtsp摘要认证协议流程 RTSP协议,全称Real Time Streaming Protocol,是应用层的协议,它主要实现的功能是传输并控制具有实时特性的媒体流,如音频(Audio)和视频 ...

  2. 拉流与推流的区别_RTSP协议交互流程之推流分析

    0.引言 为了更好理解本篇文章,可以先阅读前面几篇文章,文章列表如下: RTSP协议交互流程之拉流分析 详解RTP打包AAC实战分析(1) 详解RTP协议之H264封包和解包实战 详解RTP协议之H2 ...

  3. Janus源码分析(4)——信令交互过程

    1. Janus插件交互流程 Janus中所有插件都遵循以下基本数据流程: 客户端发送create创建一个Janus会话: Janus回复success返回Janus会话句柄: 客户端发送attach ...

  4. 音视频 RTMP协议推流交互流程

    想了解下直播常见协议RTMP,可是看着网文,头疼,这里记录下RTMP协议推流播放的交互流程,细节可以再看规范,感觉会舒服一些. RTMP(Real Time Messaging Protocol 实时 ...

  5. 深入浅出 Redis client/server交互流程

    2019独角兽企业重金招聘Python工程师标准>>> 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文 ...

  6. Redis源码剖析(一)服务器与客户端交互流程

    Redis中的C/S模型 Redis底层还是基于网络请求的,对于单机数据库而言,网络请求仅仅是在一台机器上交互,即服务器客户端都在一台计算机上 当在终端输入redis-serve时,便启动了一个Red ...

  7. bing背单词交互流程 - Chongyang Bai

    昨天和travis,钟秋开会确认了bing背单词的手机界面交互流程.我在这里简单描述一下,设计页面暂时不能贴出来,期待大家的宝贵意见 b( ̄▽ ̄)d. 单词本浏览界面:单词本被分为两类,用户单词本和单 ...

  8. Chrome 插件开发与本地程序交互流程

    Chrome 插件开发与本地程序交互流程 一. 将本地程序写入注册表 可以采用bat的方式写入注册表 REG ADD "HKCU\Software\Google\Chrome\NativeM ...

  9. [JavaScript][AJAX] 前后端交互流程,ajax工作流程

    目录 前后端交互流程 1.了解服务器 : 提供服务器的机器(计算机) 2.前端 访问服务器的几种方式 3.ajax技术 : 页面不跳转的情况下,向服务器请求数据 4.前后端交互三个流程 ajax工作流 ...

最新文章

  1. python3 socketserver_python3 socketserver
  2. MySQL配置全文索引
  3. MongoDB sharding模式实现(http://blog.chinaunix.net/xmlrpc.php?r=blog/articleuid=28266791id=5758139 )
  4. Object-C 入门
  5. PHP - PDO 之 mysql 基础操作
  6. 快学Scala 第二课 (apply, if表达式,循环,函数的带名参数,可变长参数,异常)...
  7. 在SAP除了使用Cordova生产移动应用外,还有这种方式
  8. 875. 爱吃香蕉的珂珂(二分)
  9. 长春工业大学计算机科学与技术录取分数,2021年长春工业大学各省各专业最低投档录取分数线统计(文科 理科)...
  10. 机器学习——超参数调优
  11. html5中如何自动跳转页面,实现HTML5上滑跳转页面的两种方法
  12. labelme新版本的使用须知
  13. Ubuntu中Error: Can‘t find Python executable “python“, you can set the PYTHON env variable.
  14. [BUG]Git Sever搭建与相关错误处理
  15. 黑白块游戏java代码_用java做的一个小游戏—黑白反斗棋(适合菜鸟)
  16. python窗口截图快捷键_python 自定义截图快捷键
  17. 树莓派4B监控CPU占用率、内存使用率、磁盘使用量以及CPU温度
  18. ncbi和ensembl上的序列下载
  19. 用Python分析《斗破苍穹》
  20. Matplotlib的imshow()坐标刻度调整及热图对比的注意事项

热门文章

  1. 简单的用堆栈实现的表达式计算
  2. 针对 Java 开发人员的 C# 编程语言
  3. 我平时比较喜欢的几篇技术文章
  4. Django form模块使用心得
  5. 用perl操作word
  6. Web 开发的 JavaScript 框架资料收集(15款)
  7. 水泵综合性能测试系统软件,水泵综合性能测试系统
  8. 如何在传统 ASP 和 ASP.NET 之间共享会话状态
  9. 杭电oj1257最少拦截系统(贪心)
  10. 【java】详解java中的注解(Annotation)