SRS4.0源码分析-推流总结 - 弦外之音

/ 0评 / 0

SRS原理》上架了,深度剖析 SRS 源代码,访问地址:srs.xianwaizhiyin.net


本文采用的 SRS 版本是 4.0-b8 , 下载地址:github


本文主要对前面的文章做下总结。

SRS4.0源码分析-main》,《SRS4.0源码分析-RTMP入口》,《SRS4.0源码分析-创建RTMP协程》,《SRS4.0源码分析-SrsRtmpConn::cycle》,《SRS4.0源码分析-SrsRtmpConn::stream_service_cycle》,《SRS4.0源码分析-SrsRecvThread::cycle》。

上面 7 篇 文章从 RTMP 入口,一直追踪到 推流数据保存,已经把推流大部分的逻辑 跑完了,所以需要画一张整体的流程图,协程函数 用颜色标注起来了,如下:

对上面的流程做下简单的总结。

1,SRS 服务器启动之后,会开启一个协程 (SrsTcpListener::cycle) 来 监听 1935 的RTMP端口,不断 accept 客户端请求。

2,始祖协程 利用 wg.wait() 等等其他的服务结束,其他服务是指 RTMP服务,SRT服务,RTC 服务。

3,有RTMP推流客户端请求来了,新开一个协程DSrsRtmpConn::cycle) 来处理 请求,包括RTMP握手,传输音视频数据前的交互。处理完前期的交互工作之后,发现客户端是一个推流客户端,就会再开一个协程 E SrsRecvThread::cycle)来处理推过来的音视频数据流。之前的协程D 会阻塞不断循环统计一些信息。


由于笔者的水平有限, 加之编写的同时还要参与开发工作,文中难免会出现一些错误或者不准确的地方,恳请读者批评指正。如果读者有任何宝贵意见,可以加我微信 Loken1。QQ:2338195090。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注