ngx_rtmp_live_module 模块整体描述
live模块是负责音视频流的分发作用,主要将接收来自publisher推流上来的音视频数据分发给每个player播放连接。本文章主要集中分析以下三点
1)流的组织结构
2)流数据的分发
3)流资源的回收
模块数据结构分析
直播服务器是支持多路不同的流名同时推流,而且每路流是可以支持很多个观众同时并发的,那么这些多个推流拉流行为,在服务器内部是怎样组织起来的呢。
流的组织结构主要涉及到以下三个结构体 ngx_rtmp_live_stream_t 、 ngx_rtmp_live_ctx_t以及ngx_rtmp_live_app_conf_t
/* 主要保存了所有流的结构信息,包过推流和拉流,流名,当前流的带宽信息等 */
struct ngx_rtmp_live_stream_s {
u_char name[NGX_RTMP_MAX_NAME]; 当前流的流名
ngx_rtmp_live_stream_t *next; 其他不同流名的流就是通过当前链表指针结构组织起来的
ngx_rtmp_live_ctx_t *ctx;