日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

nginx rtmp module 代码详解 各模块主要功能

發(fā)布時間:2024/2/28 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx rtmp module 代码详解 各模块主要功能 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ngx_rtmp_dash_module http模塊里播放MPEG-DASH相關(guān)處理
ngx_rtmp_mp4_module 主要支持rtmp MP4這塊點播相關(guān)功能,支持seek操作
ngx_rtmp_flv_module 主要是flv文件格式的點播相關(guān)功能,支持seek操作
ngx_rtmp_play_module rtmp點播相關(guān),支持本地,遠(yuǎn)程兩種方式點播,遠(yuǎn)程點播http方式,支持flv,mp4兩種格式
ngx_rtmp_record_module 視頻錄制默認(rèn)是flv格式, 支持按時間,按文件大小,幀個數(shù)錄制文件
ngx_rtmp_hls_module rtmp中rtmp轉(zhuǎn)hls協(xié)議處理
ngx_rtmp_mpegts rtmp中rtmp轉(zhuǎn)ts協(xié)議處理
ngx_rtmp_handshake 主要是是三次握手相關(guān)
ngx_rtmp_handler 主要是數(shù)據(jù)接收recv,發(fā)送send,ping命令相關(guān)
ngx_rtmp_init 初始化連接相關(guān)的信息
ngx_rtmp_core_module 主要是rtmp協(xié)議核心配置相關(guān).
ngx_rtmp rtmp配置解析,rtmp事件框架的初始化信息,注冊事件回調(diào)函數(shù)(協(xié)議handler,amfhandler)
ngx_rtmp_receive 主要是rtmp協(xié)議數(shù)據(jù)接收這塊
ngx_rtmp_send 數(shù)據(jù)發(fā)送這塊,以及各種rtmp消息包發(fā)送封裝的函數(shù)
ngx_rtmp_live_module 主要處理接收音視頻消息數(shù)據(jù),以及ngx_rtmp_live_av中進(jìn)行數(shù)據(jù)分發(fā),從接收到發(fā)送給每個其他session
ngx_rtmp_netcall_module 主要是http請求相關(guān)部分
ngx_rtmp_notify_module 主要rtmp發(fā)送http請求,通知作用主要監(jiān)聽connect,disconnect,play,publish,close,record_done等相關(guān)事件
ngx_rtmp_relay_module 主要是rtmp提供回源請求拉流,以及轉(zhuǎn)推,監(jiān)聽_result,_error, onStatus
ngx_rtmp_stat_module 主要是rtmp流狀態(tài)信息可以輸出到本地文件
ngx_rtmp_shared 主要是rtmp協(xié)議內(nèi)存管理方面,其中用到了引用計數(shù)來管理內(nèi)存
ngx_rtmp_bandwidth 主要是rtmp協(xié)議的帶寬計費
ngx_rtmp_cmd_module rtmp消息命令相關(guān)play,publish
ngx_rtmp_codec_module rtmp音視頻編解碼信息相關(guān)
ngx_rtmp_control_module 主要是一些控制接口,錄制開始/暫停,支持record,query,drop相關(guān)的接口
ngx_rtmp_eval 主要提供一些變量替換的函數(shù)接口,有內(nèi)存泄漏
ngx_rtmp_amf ngx_rtmp_bitop 主要是封裝讀,寫amf包信息
ngx_rtmp_access_module 監(jiān)聽play,publish事件,對ip做檢查訪問
ngx_rtmp_auto_push_module 多進(jìn)程方案,推流來時,自動推流到其他worker進(jìn)程
ngx_rtmp_exec_module 主要監(jiān)聽publish,play,close,record_done事件,然后進(jìn)行執(zhí)行腳本進(jìn)行相應(yīng)的業(yè)務(wù),如轉(zhuǎn)碼
ngx_rtmp_limit_module 主要監(jiān)聽connect以及disconnect事件,通過計算連接數(shù)量來限制連接個數(shù)
ngx_rtmp_log_module 主要是rtmp日志相關(guān),連接斷開disconncet事件的時候,輸出訪問日志相關(guān)

  • 對消息的處理
    ngx_rtmp_receive_message里面,對消息的頭部h的type做判斷之后,會調(diào)用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

  • 對amf命令的處理
    cmcf->amf_hash是存放amf命令名稱與處理函數(shù)對應(yīng)關(guān)系的地方。每個模塊會在postconfiguration的時候,將要處理的命令與處理函數(shù)的對應(yīng)關(guān)系放到cmcf->amf這個array里面
    cmcf->amf會在配置解析完成后,統(tǒng)一放到cmcf->amf_hash中。
    cmcf->amf_hash在ngx_rtmp_receive.c的ngx_rtmp_amf_message_handler函數(shù)中拿出來調(diào)用。而ngx_rtmp_amf_message_handler也是1中注冊的一種消息處理函數(shù),專門用于處理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

  • 命令的chain_handler
    一個模塊xxx,在postconfiguration的時候,對于一個命令yyy,可能會定義一個函數(shù)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;

    總結(jié)

    以上是生活随笔為你收集整理的nginx rtmp module 代码详解 各模块主要功能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。