这是[手把手一起学live555]的第13篇(按这个序号看,请找正确顺序看)。
live555工程在我的gitee下(doc下有思维导图、drawio图):https://gitee.com/lure_ai/live555/tree/master
章节目录链接
0.前言——章节目录链接与为何要写这个?
https://blog.csdn.net/yhb1206/article/details/127259190?spm=1001.2014.3001.5502
学习demo
live555mediaserver.cpp
学习线索和姿势
1.学习的线索和姿势
网络编程
流媒体的地基是网络编程(socket编程)。
[网络编程学习]-0.学习路线。
绘图规则
本文的对象图和思维导图遵守的规则详见:
2.绘图规则
非阻塞服务端网络编程流程
socket创建、bind、listen、select、accept、select、recv/send-close。
rtsp协商流程
options、describe、setup、play、pause、teardown、get parameter、set parameter
本节内容和目标
(1)rtsp协议的OPTIONS请求与响应
(2)思维导图绘制
(3)wireshark抓包
正式开始
上2节学习了通用的请求报文解析和响应,从这节开始,按照客户端与服务端的rtsp协商流程依次学习下各个具体节点的请求与响应,本节从OPTIONS开始。
1.OPTIONS请求
上图红色字体是客户端发送的rtsp请求OPTIONS,蓝色字体是服务端响应报文。
请求报文抓包数据如下
请求报文解析流程可以参照live555mediaserver-如何解析rtsp请求报文可以把这请求报文解析出来。
2.OPTIONS响应
然后看下它是怎么组响应报文的,如下图
可以看到它支持的方法有8个如下:
“OPTIONS, DESCRIBE, SETUP, TEARDOWN, PLAY, PAUSE, GET_PARAMETER, SET_PARAMETER”
组完这个报文就直接发送给客户端了,来看下响应报文抓包:
上述代码对应的对象流程图如下
小结
options作为rtsp协商的第一个节点还是比较简单的。它这个存在的意义就是让客户端知道服务端有什么,然后客户端就去要什么,你不能没啥你要啥——不能乱要!我有的我能给你,我没有的你打死我我也没有哇!