ngx_rtmp_dash_module http模块里播放MPEG-DASH相关处理
ngx_rtmp_mp4_module 主要支持rtmp MP4这块点播相关功能,支持seek操作
ngx_rtmp_flv_module 主要是flv文件格式的点播相关功能,支持seek操作
ngx_rtmp_play_module rtmp点播相关,支持本地,远程两种方式点播,远程点播http方式,支持flv,mp4两种格式
ngx_rtmp_record_module 视频录制默认是flv格式, 支持按时间,按文件大小,帧个数录制文件
ngx_rtmp_hls_module rtmp中rtmp转hls协议处理
ngx_rtmp_mpegts rtmp中rtmp转ts协议处理
ngx_rtmp_handshake 主要是是三次握手相关
ngx_rtmp_handler 主要是数据接收recv,发送send,ping命令相关
ngx_rtmp_init 初始化连接相关的信息
ngx_rtmp_core_module 主要是rtmp协议核心配置相关.
ngx_rtmp rtmp配置解析,rtmp事件框架的初始化信息,注册事件回调函数(协议handler,amfhandler)
ngx_rtmp_receive 主要是rtmp协议数据接收这块
ngx_rtmp_send 数据发送这块,以及各种rtmp消息包发送封装的函数
ngx_rtmp_live_module 主要处理接收音视频消息数据,以及ngx_rtmp_live_av中进行数据分发,从接收到发送给每个其他session
ngx_rtmp_netcall_module 主要是http请求相关部分
ngx_rtmp_notify_module 主要rtmp发送http请求,通知作用主要监听connect,disconnect,play,publish,close,record_done等相关事件
ngx_rtmp_relay_module 主要是rtmp提供回源请求拉流,以及转推,监听_result,_error, onStatus
ngx_rtmp_stat_module 主要是rtmp流状态信息可以输出到本地文件
ngx_rtmp_shared 主要是rtmp协议内存管理方面,其中用到了引用计数来管理内存
ngx_rtmp_bandwidth 主要是rtmp协议的带宽计费
ngx_rtmp_cmd_module rtmp消息命令相关play,publish
ngx_rtmp_codec_module rtmp音视频编解码信息相关
ngx_rtmp_control_module 主要是一些控制接口,录制开始/暂停,支持record,query,drop相关的接口
ngx_rtmp_eval 主要提供一些变量替换的函数接口,有内存泄漏
ngx_rtmp_amf ngx_rtmp_bitop 主要是封装读,写amf包信息
ngx_rtmp_access_module 监听play,publish事件,对ip做检查访问
ngx_rtmp_auto_push_module 多进程方案,推流来时,自动推流到其他worker进程
ngx_rtmp_exec_module 主要监听publish,play,close,record_done事件,然后进行执行脚本进行相应的业务,如转码
ngx_rtmp_limit_module 主要监听connect以及disconnect事件,通过计算连接数量来限制连接个数
ngx_rtmp_log_module 主要是rtmp日志相关,连接断开disconncet事件的时候,输出访问日志相关

  1. 对消息的处理
    ngx_rtmp_receive_message里面,对消息的头部h的type做判断之后,会调用cmcf->events[h->type]里面的handler,而这些handler是模块注册的
    ngx_rtmp.c里面,解析配置时,可能注册
    ngx_rtmp_protocol_message_handler
    ngx_rtmp_amf_message_handler
    ngx_rtmp_user_message_handler
    ngx_rtmp_aggregate_message_handler

    1. 对amf命令的处理
      cmcf->amf_hash是存放amf命令名称与处理函数对应关系的地方。每个模块会在postconfiguration的时候,将要处理的命令与处理函数的对应关系放到cmcf->amf这个array里面
      cmcf->amf会在配置解析完成后,统一放到cmcf->amf_hash中。
      cmcf->amf_hash在ngx_rtmp_receive.c的ngx_rtmp_amf_message_handler函数中拿出来调用。而ngx_rtmp_amf_message_handler也是1中注册的一种消息处理函数,专门用于处理amf类型的消息
      ngx_rtmp_cmd_module中注册了以下命令的处理方法:
      connect
      createStream
      closeStream
      deleteStream
      publish
      play
      seek
      pause
      pauseraw
      ngx_rtmp_codec_module中注册了以下命令的处理方法:
      @setDataFrame
      onMetaData
      ngx_rtmp_relay_module中注册了以下命令的处理方法:
      _result
      _error
      onStatus

    2. 命令的chain_handler
      一个模块xxx,在postconfiguration的时候,对于一个命令yyy,可能会定义一个函数ngx_rtmp_xxx_yyy来处理这个命令,将全局的ngx_rtmp_yyy指向ngx_rtmp_xxx_yyy,并定义一个next_yyy,指向原来的ngx_rtmp_yyy
      例如:
      next_play = ngx_rtmp_play;
      ngx_rtmp_play = ngx_rtmp_live_play;

chain handler包括这些
ngx_rtmp_connect_pt ngx_rtmp_connect;
ngx_rtmp_disconnect_pt ngx_rtmp_disconnect;
ngx_rtmp_create_stream_pt ngx_rtmp_create_stream;
ngx_rtmp_close_stream_pt ngx_rtmp_close_stream;
ngx_rtmp_delete_stream_pt ngx_rtmp_delete_stream;
ngx_rtmp_publish_pt ngx_rtmp_publish;
ngx_rtmp_play_pt ngx_rtmp_play;
ngx_rtmp_seek_pt ngx_rtmp_seek;
ngx_rtmp_pause_pt ngx_rtmp_pause;
ngx_rtmp_stream_begin_pt ngx_rtmp_stream_begin;
ngx_rtmp_stream_eof_pt ngx_rtmp_stream_eof;
ngx_rtmp_stream_dry_pt ngx_rtmp_stream_dry;
ngx_rtmp_recorded_pt ngx_rtmp_recorded;
ngx_rtmp_set_buflen_pt ngx_rtmp_set_buflen;

nginx rtmp module 代码详解 各模块主要功能相关推荐

  1. 异步FIFO设计:各个模块的作用及Verilog代码详解

    实现原理参考:异步FIFO---Verilog实现_alangaixiaoxiao的博客-CSDN博客_异步fifo 代码参考:IC基础(一):异步FIFO_MaoChuangAn的博客-CSDN博客 ...

  2. 九爷带你了解 nginx 日志配置指令详解

    nginx日志配置指令详解 日志对于统计排错来说非常有利的. 本文总结了nginx日志相关的配置如 access_log.log_format.open_log_file_cache.log_not_ ...

  3. nginx服务器安装及配置文件详解

    nginx服务器安装及配置文件详解 seanlook 5月26日 发布 4 推荐 97 收藏,9.2k 浏览 nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自 ...

  4. socket 获取回传信息_Luat系列官方教程5:Socket代码详解

    文章篇幅较长,代码部分建议横屏查看,或在PC端打开本文链接.文末依然为爱学习的你准备了专属福利~ TCP和UDP除了在Lua代码声明时有一些不同,其他地方完全一样,所以下面的代码将以TCP长连接的数据 ...

  5. sgd 参数 详解_代码笔记--PC-DARTS代码详解

    DARTS是可微分网络架构搜搜索,PC-DARTS是DARTS的拓展,通过部分通道连接的方法在网络搜索过程中减少计算时间的内存占用.接下来将会结合论文和开源代码来详细介绍PC-DARTS. 1 总体框 ...

  6. Pytorch | yolov3原理及代码详解(一)

    YOLO相关原理 : https://blog.csdn.net/leviopku/article/details/82660381 https://www.jianshu.com/p/d13ae10 ...

  7. 人体姿态估计HRNet网络模型搭建代码详解

    HRNet-v1模型详解 源码参考:https://github.com/HRNet/HRNet-Human-Pose-Estimation 内容参考:点击跳转 仅作为个人的学习笔记,欢迎交流学习. ...

  8. ES Module原理详解

    ES Module原理详解 一.ES Modules如何工作 流程简析 二.模块加载 1.构造 2.实例化 3.求值 总结 参考 ES Module 系列: ES Module使用详解 ES Modu ...

  9. nodeJS入门——新建一个项目及代码详解

     nodeJS入门--新建一个项目及代码详解 有了解nodejs的童鞋们知道,nodejs有很多的依赖,那么我们在新建一个项目的时候,如何快速的导入这些依赖从而创建一个nodejs项目呢,接下来会 ...

最新文章

  1. 【bzoj1951】 Sdoi2010—古代猪文
  2. 我去字节跳动面试,“偷”回来的面试题,题真难...
  3. [C语言] qsort 快速排序函数讲解
  4. sed线上经典案例之-同时替换多个字符串
  5. 解读ADC采样芯片(EV10AQ190A)的工作模式(单通道模式)
  6. Simulating Ocean Water (2) (2005-03-31 update)
  7. influx测试——单条读性能很差,大约400条/s,批量写性能很高,7万条/s,总体说来适合IOT数据批量存,根据tag查和过滤场景,按照时间顺序返回...
  8. linux进程--死锁产生的原因及四个必要条件(六)
  9. S3c2440A平台HIVE注册表+binfs的实现
  10. 如何增加Android模拟器的可用空间
  11. python实现k core算法_python实现k-近邻算法
  12. 小白都能了解的聚类算法之一(Kmeans与GMM)
  13. MapReduce Shuffle详解
  14. gauscoor软件怎么用_高斯坐标经纬度转换器
  15. windows update 离线包下载
  16. 计算机ps计划,ps教学计划
  17. Linux下的磁盘分区简介
  18. 企业网站网络营销的第一印象
  19. excel poi 自动换行_Java利用POI生成Excel强制换行
  20. win10计算机休眠快捷键,让win10电脑快速进入休眠快捷键是什么-

热门文章

  1. About Me - 关于
  2. IBastis配置实例
  3. 第十九章 7 Data类
  4. 牛客 - 阔力梯的树(树上启发式合并)
  5. 在HTML5网页中写法正确的是,跟永哥学HTML5(4):正确使用HTML5的header、hgroup和section...
  6. visio 形状_分享我Visio经验(问题从来都不是问题)
  7. 贪心算法-03哈夫曼编码问题
  8. 机器学习-关联之FP-Growth算法原理及实战
  9. 创建 tls 客户端 凭据时发生严重错误。内部错误状态为 10013_kubectl 创建 Pod 背后到底发生了什么?...
  10. 计算机基础课程在线教学授课方案,《计算机基础》课程分层次模块化教学实施方案...