RTMP的Play協(xié)議

作者原創(chuàng),轉(zhuǎn)載請(qǐng)聯(lián)系作者
publisher通過Publish進(jìn)行推送流之后,客戶端可以發(fā)起Play操作,本文描述客戶端經(jīng)過handshake、connection協(xié)議后的Play協(xié)議。Play協(xié)議與Publish協(xié)議非常類似,細(xì)節(jié)不同而已,本文主要講解不同之處。

涉及模塊

針對(duì)推流操作,NGX-RTMP處理比較復(fù)雜,涉及的模塊也比較多,先羅列如下。至于回調(diào)如何注冊(cè)、如何調(diào)用請(qǐng)參考前文。

  • 模塊名:ngx_rtmp_access_module
    回 調(diào):ngx_rtmp_access_play
  • 模塊名:ngx_rtmp_cfms_module
    回 調(diào):ngx_rtmp_cfms_play
  • 模塊名:ngx_rtmp_cmd_module
    回 調(diào):ngx_rtmp_cmd_play
  • 模塊名:ngx_rtmp_exec_module
    回 調(diào):ngx_rtmp_exec_play
  • 模塊名:ngx_rtmp_live_module
    回 調(diào):ngx_rtmp_live_play
  • 模塊名:ngx_rtmp_log_module
    回 調(diào):ngx_rtmp_log_play
  • 模塊名:ngx_rtmp_notify_module
    回 調(diào):ngx_rtmp_notify_play
  • 模塊名:ngx_rtmp_play_module
    回 調(diào):ngx_rtmp_play_play
  • 模塊名:ngx_rtmp_log_module
    回 調(diào):ngx_rtmp_log_play
  • 模塊名:ngx_rtmp_relay_module
    回 調(diào):ngx_rtmp_relay_play

具體處理

  • 上述那些模塊如何順序調(diào)用?
    在注冊(cè)回調(diào)時(shí),將原回調(diào)ngx_rtmp_publish保存起來為next_publish。在ngx_rtmp_live_publish回調(diào)處理完畢后調(diào)用next_publish,從而下一個(gè)模塊繼續(xù)調(diào)用。見代碼:
   next_publish = ngx_rtmp_publish;
   ngx_rtmp_publish = ngx_rtmp_live_publish;
  • 上述那些模塊調(diào)用順序如何?
    這個(gè)問題較簡(jiǎn)單,查看我的前文《RTMP添加到NGINX》中描述,主要根據(jù)編譯時(shí)生成的 ngx_module_t *ngx_modules[] 變量在啟動(dòng)的時(shí)候一次執(zhí)行
  • 做什么什么工作?
    因?yàn)槟K比較多,在此挑選ngx_rtmp_live_module進(jìn)行敘述,其他模塊處理細(xì)節(jié)請(qǐng)各位看官閱讀代碼,如有問題可以消息我,如有必要可以再撰文描述
    • 合法性校驗(yàn)主要有:
NetStream.Play.StreamNotFound
NetStream.Publish.BadName
  • 設(shè)置ctx
```

ctx->stream = stream;
ctx->publishing = 0;
ctx->next = (
stream)->ctx;
ctx->cs[0].csid = NGX_RTMP_CSID_VIDEO;
ctx->cs[1].csid = NGX_RTMP_CSID_AUDIO;

 - 給pulbisher回復(fù)消息NetStream.Play.Start
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 作者原創(chuàng),轉(zhuǎn)載請(qǐng)聯(lián)系作者經(jīng)過建立Netconnection和CreateStream之后,客戶端就可以進(jìn)行相應(yīng)的流...
    Alfie20閱讀 3,494評(píng)論 0 1
  • 作者原創(chuàng),轉(zhuǎn)載請(qǐng)聯(lián)系作者 作者將以系列文章進(jìn)行解析Nginx-Rtmp模塊代碼,地址為nginx-rtmp-mod...
    Alfie20閱讀 1,347評(píng)論 0 2
  • 作者原創(chuàng),轉(zhuǎn)載請(qǐng)聯(lián)系作者 本文主要介紹通過前文介紹的將rtmp模塊編譯進(jìn)nginx情況下,啟動(dòng)nginx時(shí)rtmp...
    Alfie20閱讀 2,321評(píng)論 0 2
  • 譯序:截至 Jul 8th,2013 官方公布的最新 Nginx RTMP 模塊 nginx-rtmp-modul...
    河自清閱讀 11,883評(píng)論 2 9
  • 本文系轉(zhuǎn)載》》》》》》》》》》》》》》》》 編者按:高可用架構(gòu)分享及傳播在架構(gòu)領(lǐng)域具有典型意義的文章,本文由陳科在...
    demop閱讀 8,336評(píng)論 0 7

友情鏈接更多精彩內(nèi)容