SRS4.0源码分析-main
本文采用的 SRS 版本是 4.0-b8 , 下載地址:github
本文開始講解 SRS 的入口文件。SRS 源碼里 其實有 3 個?main()?函數,分別在?srs_main_ingest_hls.cpp?,srs_main_mp4_parser.cpp,srs_main_server.cpp?3 個文件里面,如圖:
不過?srs?可執行文件,是srs_main_server.cpp?生成的,所以先分析?srs_main_server.cpp,其他兩個文件不管。
main()?函數的流程圖如下:
main()?函數的內部邏輯實際上比較簡單,因為所有的操作都封裝在其他函數里面。特別是?srs_thread_initialize()?跟?run_directly_or_daemon()?函數。
所以 main() 函數本文只會提及一些重點,重點如下:
1,srs_thread_initialize()?里面有非常多的初始化操作,日志操作,配置文件,等等,請看《SRS4.0源碼分析-srs_thread_initialize》。
2,srs_assert(srs_is_little_endian());,srs 只支持小端序機器,大端序機器不支持。
3,用了大量的?GPERF?來檢測內存泄漏,具體請看 《SRS4.0源碼分析-內存泄漏檢測》。
3,show_macro_features(),這個函數打印 srs 支持哪些功能,例如 srt,dvr 是否支持。
4,run_directly_or_daemon()?,此函數開始運行 SRS,可能在前臺運行,也可能以守護進程運行。
相關閱讀:
1,《SRS流媒體服務器基本流程》
TODO:
1,寫一篇文章講解?gperftools?的使用。
由于筆者的水平有限, 加之編寫的同時還要參與開發工作,文中難免會出現一些錯誤或者不準確的地方,懇請讀者批評指正。如果讀者有任何寶貴意見,可以加我微信 Loken1。QQ:2338195090。
推薦一個零聲學院免費公開課程,個人覺得老師講得不錯,分享給大家:
Linux,Nginx,ZeroMQ,MySQL,Redis,fastdfs,MongoDB,ZK,流媒體,CDN,P2P,K8S,Docker,TCP/IP,協程,DPDK等技術內容,立即學習
總結
以上是生活随笔為你收集整理的SRS4.0源码分析-main的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 精品英文字体:20款免费的的圣诞节艺术字
- 下一篇: ZCMU 1600: 卡斯丁狗要吃糖葫芦