rtmp模块初始化源码剖析
rtmp模块初始化过程主要分为以下几个点: 上下文结构初始化、配置项解析、配置项合并、server 相关端口设置。相关源码文件主要在ngx_rtmp.c和ngx_rtmp.h文件中
下面主要从rtmp框架相关的数据结构,以及整个初始化过程进行分析。
数据结构
nginx-rtmp模块的核心框架定义的通用数据结构主要有以下几个:ngx_rtmp_module_t 、ngx_rtmp_conf_ctx_t
nginx中定义了模块的通用接口ngx_module_t。而对于每个不同类型的模块,又有一个具体的结构体来描述这一类模块的接口,例如:http,event模块,mail等.
而ngx_rtmp_module_t是nginx-rtmp项目模块的rtmp类型的接口。和http 类似,rtmp把rtmp{}, server{}, app{}块的配置项分别称为main、srv、app 级别配置项
typedef struct {
/* 解析rtmp{} 块内的配置项之前的回调 */
ngx_int_t (*preconfiguration)(ngx_conf_t *cf);
/* 解析rtmp{} 块内的配置项之后的回调 */
ngx_int_t (*postconfiguration)(ngx_conf_t *cf);
/* 用于创建rt