janus文件介紹

1、文件列表

├── conf/ #janus主進(jìn)程、插件啟動(dòng)配置文件范例
├── docs/ #Doxygen文檔生成相關(guān)
├── events/ #event類(lèi)型的插件,純粹做事件通知
├── fuzzers/ #rtp rtcp解析和處理的測(cè)試代碼以及測(cè)試的rtp二進(jìn)制包
├── html/ #html文檔以及測(cè)試用demo,可以測(cè)試各個(gè)功能插件
├── npm/ #janus javascript npm包相關(guān)
├── plugins/ #plugin類(lèi)型的插件,實(shí)現(xiàn)webrtc業(yè)務(wù)邏輯
├── postprocessing/ #Janus保存的.mjr處理為音視頻文件的工具
└── transports/ #transport類(lèi)型插件,實(shí)現(xiàn)各種協(xié)議,為了與plugin類(lèi)型的插件通信完成webrtc握手
├── apierror.c #錯(cuò)誤代碼轉(zhuǎn)字符串
├── apierror.h #錯(cuò)誤代碼
├── auth.c  #插件鑒權(quán)機(jī)制
├── auth.h  #插件鑒權(quán)機(jī)制
├── config.c
├── config.h #配置文件解析、編輯、生成工具
├── debug.h  #日志打印
├── dtls.c
├── dtls.h #libsrtp和openssl實(shí)現(xiàn)srtp和sctp協(xié)議
├── dtls-bio.c
├── dtls-bio.h #設(shè)置openssl bio的回調(diào)函數(shù),輸出數(shù)據(jù)至于libnice
├── events.c
├── events.h  #實(shí)現(xiàn)event類(lèi)型插件事件觸發(fā)的消息廣播機(jī)制
├── ice.c #實(shí)現(xiàn)plugin插件與ice綁定以及ice會(huì)話(huà)狀態(tài)機(jī),代碼量4000+行
├── ice.h  #實(shí)現(xiàn)plugin插件與ice綁定以及ice會(huì)話(huà)狀態(tài)機(jī),代碼量4000+行
├── ip-utils.c
├── ip-utils.h #獲取本機(jī)ip地址、ip地址數(shù)據(jù)結(jié)構(gòu)定義等工具
├── janus.c  #janus主進(jìn)程,主要實(shí)現(xiàn)插件加載管理、插件消息管理,代碼量4000+行
├── janus.h #janus主進(jìn)程頭文件
├── janus.ggo #janus主進(jìn)程shell命令行參數(shù)定義文件,通過(guò)gengetopt工具生成命令行相關(guān)源碼(cmdline.c文件)
├── janus-cfgconv.c #配置文件轉(zhuǎn)換工具,janus老版本配置文件.cfg轉(zhuǎn).jcfg
├── log.c  #實(shí)現(xiàn)異步日志等
├── log.h #實(shí)現(xiàn)異步日志等
├── mach_gettime.h #獲取系統(tǒng)時(shí)間戳
├── mutex.h #互斥鎖和調(diào)節(jié)變量宏定義
├── record.c
├── record.h #插件保存音視頻幀為文件的估計(jì)類(lèi)
├── refcount.h #原子變量實(shí)現(xiàn)的引用計(jì)數(shù)器
├── rtcp.c
├── rtcp.h #rtcp協(xié)議的實(shí)現(xiàn)
├── rtp.c
├── rtp.h #rtp協(xié)議的實(shí)現(xiàn)
├── rtpsrtp.h #srtp相關(guān)的宏定義已經(jīng)錯(cuò)誤代碼轉(zhuǎn)string
├── sctp.c
├── sctp.h #基于srsctp實(shí)現(xiàn)sctp協(xié)議相關(guān)代碼,用于datachannel
├── sdp-utils.c
├── sdp-utils.h #webrtc sdp解析工具
├── sdp.c
├── sdp.h #webrtc sdp解析處理已經(jīng)綁定ice handle
├── text2pcap.c
├── text2pcap.h #Dumping of RTP/RTCP packets to text2pcap or pcap format (headers)
├── turnrest.c
├── turnrest.h #TURN REST API client (headers)
├── utils.c
├── utils.h #常用工具、隨機(jī)數(shù)、字符串處理、時(shí)間戳、位操作等
├── version.c #由腳本生成的版本相關(guān)全局變量定義
└── version.h #版本相關(guān)全局變量聲明,變量定義由腳本生成

2、源碼學(xué)習(xí)建議

  • 1、先大體看下整個(gè)代碼結(jié)構(gòu),加深整體印象,此時(shí)不要求精讀,只需大概知道每個(gè)文件用處即可。
  • 2、查看transports、plugins類(lèi)型插件的頭文件什么,了解主要插件入口函數(shù),以及janus提供的callback方法。
  • 3、粗看janus.c源碼。
  • 4、編譯運(yùn)行janus主程序,使用CLion的debug功能,調(diào)試janus主程序main函數(shù),掌握程序啟動(dòng)步驟以及流程,邊調(diào)試邊細(xì)度janus.c源碼。
  • 5、測(cè)試janus提供的javascript demo程序,以 echo test為例,在janus的janus_process_incoming_request處打斷點(diǎn),調(diào)試transport插件消息處理機(jī)制,并精讀janus_process_incoming_request函數(shù)源碼。
  • 6、精讀transports/janus_http.c源碼。
  • 7 、下一步精讀ice.c源碼,了解ice handle與插件綁定機(jī)制
  • 8、精讀srtp相關(guān)代碼
  • 9、基本上就掌握了janus的機(jī)制和流程
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容