nginx-rtmp源码概述
/* 點播相關*/
ngx_rtmp_dash_module
ngx_rtmp_mp4
ngx_rtmp_mp4
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格式, 支持按時間,按文件大小,幀個數錄制文件 */
/* hls文件切片相關*/
ngx_rtmp_hls_module
ngx_rtmp_mpegts
/* rtmp機制整體框架, 協議握手,初始化相關,數據收發*/
ngx_rtmp_handshake 主要是是三次握手相關
ngx_rtmp_handler 主要是數據接收recv,發送send,ping命令相關
ngx_rtmp_init ?初始化連接相關的信息
ngx_rtmp_core_module 主要是rtmp協議核心配置相關.
ngx_rtmp rtmp配置解析,rtmp事件框架的初始化信息,注冊事件回調函數(協議handler,amfhandler)
/* rtmp直播,以及統計、通知、控制相關功能*/
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事件的時候,輸出訪問日志相關
業務相關擴展功能大體有四類:統計、通知、控制。它們的實現代價如下:
“統計”處理了數據收發部分的代碼;
“通知”事件框架;
“控制”耦合了具體功能的調用;
還有其他一些異常消息情況
總結
以上是生活随笔為你收集整理的nginx-rtmp源码概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SecureCRT:保存输出日志的方法
- 下一篇: nginx主模块指令