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

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

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

编程问答

nginx rtmp代码架构1 hook点总结

發(fā)布時(shí)間:2024/2/28 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 nginx rtmp代码架构1 hook点总结 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 對(duì)消息的處理?
ngx_rtmp_receive_message里面,對(duì)消息的頭部h的type做判斷之后, 會(huì)調(diào)用cmcf->events[h->type]里面的handler,而這些handler是模塊注冊(cè)的?
ngx_rtmp.c里面,解析配置時(shí),可能注冊(cè)
ngx_rtmp_protocol_message_handler
ngx_rtmp_amf_message_handler
ngx_rtmp_user_message_handler
ngx_rtmp_aggregate_message_handler

2. 對(duì)amf命令的處理?
cmcf->amf_hash是存放amf命令名稱(chēng)與處理函數(shù)對(duì)應(yīng)關(guān)系的地方。每個(gè)模塊會(huì)在postconfiguration的時(shí)候,將要處理的命令與處理函數(shù)的對(duì)應(yīng)關(guān)系放到cmcf->amf這個(gè)array里面?
cmcf->amf會(huì)在配置解析完成后,統(tǒng)一放到cmcf->amf_hash中。?
cmcf->amf_hash在ngx_rtmp_receive.c的ngx_rtmp_amf_message_handler函數(shù)中拿出來(lái)調(diào) 用。而ngx_rtmp_amf_message_handler也是1中注冊(cè)的一種消息處理函數(shù),專(zhuān)門(mén)用于處理amf類(lèi)型的消息?
ngx_rtmp_cmd_module中注冊(cè)了以下命令的處理方法:?
connect
createStream
closeStream
deleteStream
publish
play
seek
pause
pauseraw
ngx_rtmp_codec_module中注冊(cè)了以下命令的處理方法:?
@setDataFrame
onMetaData
ngx_rtmp_relay_module中注冊(cè)了以下命令的處理方法:?
_result
_error
onStatus

3. 命令的chain_handler?
一個(gè)模塊xxx,在postconfiguration的時(shí)候,對(duì)于一個(gè)命令yyy,可能會(huì)定義一個(gè)函數(shù)ngx_rtmp_xxx_yyy來(lái)處理這個(gè)命 令,將全局的ngx_rtmp_yyy指向ngx_rtmp_xxx_yyy,并定義一個(gè)next_yyy,指向原來(lái)的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代码架构1 hook点总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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