SRS(simple-rtmp-server)流媒体服务器源码分析--启动

阅读:1473 2019-03-20 16:46:10 来源:新网

srs(simple-rtmp-server)流媒体服务器源码分析--系统启动一、前言小卒最近看srs源码,随手写下博客,其一为了整理思路,其二也是为日后翻看方便。如果不足之处,请指教!

首先总结一下srs源码的优点:

1、轻量级,代码结构清楚,目前srs3.0代码8万行左右,但几乎满足直播业务的所有要求。

2、srs采用statethreads,支持高并发量,高性能。

3、srs支持rtmp和hls,满足pc和移动直播要求。

4、srs支持集群部署。小集群forward,大集群edge。

代码分析可分为两个阶段:一:分析代码框架,理清楚组织流程二:分析代码细节,熟悉srs工作原理

相关srs源码其他总结:

srs(simple-rtmp-server)流媒体服务器源码分析--系统启动srs(simple-rtmp-server)流媒体服务器源码分析--rtmp消息play

srs(simple-rtmp-server)流媒体服务器源码分析--rtmp信息publish

srs(simple-rtmp-server)流媒体服务器源码分析--hls切片

现阶段,我主要以代码框架梳理为主。srs源码框架如下图:

进入客户监听

1、首先分析rtmp连接

来到了st_thread_create,这里要注意,这是srs开源项目具有高并发,高性能的重要一步。这里创建的是协程,不是线程。协程是有别于进程和线程的一种组件,具有进程的独立性和线程的轻量级,听说微信能够支持8亿用户量,也是采用协程这种网络服务框架:http://www.infoq.com/cn/articles/cplusstylecorourtine-at-wechat。

从这里可以看出,srs是一个单线程的服务器,采用协程,主持高并发,高性能。

创建协程,协程函数为:thread_fun()

2、再分析http-api连接,回到intsrsserver::listen()函数中,梳理http-api链接

3、httpapi回调注册

回到run_master()函数中,从_srs_server->http_handle()看起。

该函数注册了http-api回调接口。可以参考:https://github.com/ossrs/srs/wiki/v2_cn_httpapi

比如我们可以访问http://ip:1985/api/v1其中ip为srs服务器地址,就可以看到从该接口返回srs服务器参数。

4、ingest(拉流,srs主动去拉流,和推流相反)处理

5、srs自服务

上一篇: Javaweb基础知识
相关文章
{{ v.title }}
{{ v.description||(cleanHtml(v.content)).substr(0,100)+'···' }}
你可能感兴趣
推荐阅读 更多>
推荐商标

{{ v.name }}

{{ v.cls }}类

立即购买 联系客服