SRS源码阅读(一)


SRS源码阅读(一)

SRS作为国人开发的一款高性能流媒体服务器,SRS的定位是运营级的互联网直播服务集群。想必大部分人都使用过,但是很多人也仅仅是停留在会使用的层面,正如原作者所说的,SRS是可以进行二次开发的,那么关于服务器整体是如何运转的我觉得对于一个从事流媒体开发者而言事关重要,因此对于SRS源码的解读就势在必行。

截至2020.8,SRS已经发布到3.0版本,具体可以查看官网link.

https://github.com/ossrs/srs

SRS目前的代码量已经达到十几万行,在linux系统下面阅读代码必定不方便,为了方便代码的阅读,我们可以采用本地的IDE进行阅读,作者采用的是Visual Studio 2019来阅读代码,界面如下:

SRS源码阅读(一)
下面就开始我们的源码阅读——SRS服务器的启动流程

阅读源码一般是先掌握整体思路,然后再抠细节。SRS服务器是C++写的,因此首先想到的是去寻找main()函数,SRS服务器的主程序是在 srs_main_server 下,如下

SRS源码阅读(一)
本文并不会一行行代码的解读,而是以一个大局观来解读整个SRS服务器在启动阶段的是如何操作的。

SRS服务器在启动阶段主要涉及配置文件config,日志文件log,启动服务server这三方面。按照源码的顺序,可以分为一下步骤

1、检查解析启动命令参数

SRS源码阅读(一)
检查解析启动命令参数主要利用的是下面这三个函数

parse_options():参数分析,提供一些帮助命令例如 -h等等
get_work_dir():工作路径获取
initialize_cwd():初始化工作路径

2、初始日志接口

SRS源码阅读(一)

Initialize():配置解析,初始化日志文件

3、检查配置文件是否正确

SRS源码阅读(一)

check_config():检查配置文件是否正确

4、创建 SrsServer服务,初始化一些变量

SRS源码阅读(一)

5、通过守护进程daemon检查是否后台运行还是控制台运行

SRS源码阅读(一)

6、初始化st 协程库,信息号管理器

SRS源码阅读(一)SRS源码阅读(一)

初始化信号管理器信号管理器主要接收外部的一些系统信号;然后做相应的处理,如修改配置后,发送信号,修改重新加载配置标记,主线程根据该标记重新加截配置。

7、如果后台运行写进程pid到文件

SRS源码阅读(一)

8、监听连接:

Listen()函数里面包含了对各个部分的监听,主要包含如下部分:
SRS源码阅读(一)

8.1 listen_rtmp: rtmp推流或拉流连接

SRS源码阅读(一)

8.2 listen_http_api: api请求连接

SRS源码阅读(一)

8.3 listen_http_stream: http拉流连接,http-flv,http-ts,http-aac,http-mp3

SRS源码阅读(一)

8.4 listen_stream_caster: 接收MpegTSOverUdp流请求,rtsp推流请求,http-flv推流请求

SRS源码阅读(一)

9、初始化http_ api接口处理

SRS源码阅读(一)

10、启动ingest协程,使用ffmpeg,拉取文件或流转发到本服务

SRS源码阅读(一)

跳转至函数ingest(),里面会有一个start()函数,进入该函数里面的clear_engines()函数,里面就是一些关于FFmpeg的操作。

11、启动主线程

SRS源码阅读(一)

主要是重新加载配置,更新时 间缓冲,更新CPU,内存,网络,磁盘使用情况,更新RTMP服务器状态网络流量,发送http心跳等等。

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

SRS源码阅读(一)

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » SRS源码阅读(一)
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏