ngx_rtmp_live_module 模块

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;                      当前连接的ctx信息
    ngx_rtmp_live_ctx_t                *publish_ctx;              当前流名的推流的ctx信息
    ngx_rtmp_bandwidth_t                bw_in;                    流入带宽信息
    ngx_rtmp_bandwidth_t                bw_in_audio;              流入音频带宽信息
    ngx_rtmp_bandwidth_t      

你可能感兴趣的:(nginx-rtmp源码剖析)