live555工程代码路径
live555工程在我的gitee下(doc下有思维导图、drawio图):
live555
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
rtp打包流程
打开媒体文件、读取一帧媒体数据、rtp打包、rtp发送
本节内容和目标
(1)rtp打包
(2)思维导图绘制
(3)wireshark抓包
(4)对象图
正式开始
server端收到play指令后就开始进行流媒体数据打rtp包进行发送了。
一般rtp打包思路:
(1) 打开媒体文件
(2)读取一帧数据
(3) rtp打包
(4)rtp发送
(5) 文件读完结束断开rtsp链接或者从头开始不断循环
一般是2-4不断循环直至文件结尾,进入第5条。
因为live555是支持多种媒体文件类型的——264/265/mkv等等文件——那么这些流程是不是可以高度抽象出统一的基类,各媒体类型子类分别实现自身的处理方法?
是否如此还得学习下其流程。
1.打开媒体文件
2.读取一帧数据
3.rtp打包
之前play的流程里有rtp打包的初始流程:
一如这篇文章所讲:https://blog.csdn.net/Lasuerte/article/details/80929769。