0.前言——章节目录链接与为何要写这个?

这是[手把手一起学live555]的第1篇(按这个序号看)。
live555工程在我的gitee下(doc下有思维导图、drawio图):
https://gitee.com/lure_ai/live555/tree/master

一、章节目录链接

第一篇 rtsp服务端demo live555MediaServer

第1阶段 网络编程探索阶段
3.live555MediaServer-从socket创建到listen
https://blog.csdn.net/yhb1206/article/details/127264590?spm=1001.2014.3001.5502

4.live555mediaserver-第一次select
https://blog.csdn.net/yhb1206/article/details/127280479?spm=1001.2014.3001.5502

5.live555mediaserver-accept
https://blog.csdn.net/yhb1206/article/details/127298503?spm=1001.2014.3001.5502

6.live555mediaserver-[select-recvfrom/send-close]
https://blog.csdn.net/yhb1206/article/details/127361192?spm=1001.2014.3001.5502

7.live555mediaserver-第1阶段小结(完整对象图和思维导图)
https://blog.csdn.net/yhb1206/article/details/127330771?spm=1001.2014.3001.5502

第2阶段 rtsp协议探索阶段
8.live555mediaserver-第2阶段rtsp协议线索简述
https://blog.csdn.net/yhb1206/article/details/127331134?spm=1001.2014.3001.5502

9.live555mediaserver-如何识别完整的rtsp请求报文?
https://blog.csdn.net/yhb1206/article/details/127378042?spm=1001.2014.3001.5502

10.live555mediaserver-如何解析rtsp请求报文?
https://blog.csdn.net/yhb1206/article/details/127593127?spm=1001.2014.3001.5502

11.live555mediaserver-如何响应rtsp请求?
https://blog.csdn.net/yhb1206/article/details/127947443?spm=1001.2014.3001.5502

12.live555mediaserver-options请求与响应
https://blog.csdn.net/yhb1206/article/details/128050639?spm=1001.2014.3001.5502

13.live555mediaserver-describe请求与响应
https://blog.csdn.net/yhb1206/article/details/128073380?spm=1001.2014.3001.5502

14.live555mediaserver-setup请求与响应
https://blog.csdn.net/yhb1206/article/details/128696468?spm=1001.2014.3001.5502

15.live555mediaserver-play请求与响应
https://blog.csdn.net/yhb1206/article/details/129845823

第3阶段 rtp协议探索阶段

16.live555mediaserver-rtp打包与发送
https://blog.csdn.net/yhb1206/article/details/132479489

17.live555mediaserver-rtsp保活机制

第2篇 rtsp客户端

第1阶段 网络编程探索阶段

第2阶段 rtsp协议探索阶段

第3阶段 rtp协议探索阶段

二、为何要写这个栏目?

为何要写这个栏目?因为live555学习笔记不多且他们的笔记有2个缺点:1.对象图很粗略。2.讲解角度不是我想要的角度——他们上来就讲解各个类关系,或者一上来就对一个demo没有线索的讲解。所以才想把自己想要的东西搞出来,作为学习笔记。

我想要的效果:
1.详细的对象图和思维导图。网上他人的对象图很粗略只是把各类继承、聚合等关系画出来,却没有画出更详细的地图导航 ——比如基类里的纯虚方法是在哪个子类里面实现的呢?如果只有一个纯虚方法就好记,但是如果有很多呢?再然后,一个类这样子就很好记,那如果有很多类呢?对于刚接触的新手,这记起来多麻烦?所以最好有一个详细的地图 ,这个地图就是代码的化身,一看就能知道纯虚方法是在哪个子类实现的,一搜就知道这个类在哪里,是不是属于类中类,其继承与子类又是什么。然后再结合思维导图,让人更清晰宏观把控代码。而网上没有,只好自己动手画了。
下面看下我画的图
小尝
上图清晰度不够,是因为我是截图的(截取了部分图),后续会把原图放到对应章节。从模糊的上图可以粗略看到我的绘图风格,链表也会画出来,我是追求看这图后能在脑海中动起来(我很渴望能出现动画般流动的工具),从中可以看到我与其他人绘图的不同,我就是要画出纯虚方法及其实现,比如图中基类TaskScheduler中的各纯虚方法在哪个子类实现的一清二楚,以及其创建流动箭头。绘图规则后续再说。

2.从下而上的代码走读角度。live555是个流媒体的开源项目,那么流媒体的骨架是什么?是网络编程。但是网上的笔记要么直接开讲各对象之间的关系,要么拿demo直接开讲,但是却没有一个按照网络编程的线索从下而上来讲解的,这样子会让新手很糊涂的。比如当我看live555MediaServer这个demo的时候,其实我想知道socket创建、bind、listen、select、accept、rtsp再到rtp从下而上完整链路和流程——但是网上没有这样写的,于是只好自己写了——我这样的线索一路看过去——顺藤摸瓜,一环接一环,这样越看越有趣,越看越有探索的神秘感——好像走迷宫,但是有线索可循。

最终成果:我会用开源绘图工具drawio进行绘制详细的对象图,会用xmind绘制思维导图,再按照网络编程的线索来从下而上一步一步探索live555。
关键一点是探索的线索,结合对象图和思维导图就能宏观和细节把控live555实现源码。
在这探索的过程中,可以学习网络编程知识、可以学习c++的相关语法知识。
我写这系列的初心是一起学,一起讨论。

预期收获 :c++相关语法知识、网络编程、rtsp协议、rtp协议、wireshark、面向对象编程、绘制对象图、绘制思维导图等等。

基础要求 :只要有c语言基础即可,有c++基础更好,没有的话可以和我一起学习一起进步。

计划:先从流媒体服务端开始学,再学客户端。
服务端的话,从live555MediaServer入手学习。
客户端的话,待定。

其他说明
像live555源码下载、编译、vs工程创建编译、以及运行demo就不说了,直接网上搜就行了。

3.好的文章推荐

参见从零开始写一个RTSP服务器(一)RTSP协议讲解
https://blog.csdn.net/weixin_42462202/article/details/98986535

rtsp协议开发指南
rtsp协议格式解析
rtsp协议报文解析-请求行解析
rtsp协议报文解析-首部字段解析
个人对rtsp协议的理解

3 live555源码分析(三)——live555 任务调度

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值