└── src
├── app
├── core
├── kernel
├── libs
├── main
├── protocol
└── utest
core:
並不是很重要而且與流媒體核心功能無關的代碼;
kernel:
將程序基礎功能,比如:日誌功能,錯誤碼功能,I/O、所有宏和常量定義以及音視頻數據相關基礎模塊放在這裏;
libs:
socket封裝、rtmp工具;
main:
主程序所在
protocol:
傳輸協議相關基礎組件,包括rtsp、rtmp、http、json、buffer。我覺得json和buffer爲基礎組件。
app:
代碼量最大的模塊。線程封裝、系統狀態檢查、消息隊列類、vhost相關、配置文件相關、ffmpeg封裝類、音視頻相關功能。
這個層次在我看來,不是很清晰。
我認爲一個流媒體服務器程序應該有的樣子:
1、操作系統適配:I/O、socket、thread、內存池,線程池;
2、配置文件模塊;
3、日誌模塊;
4、基礎數據結構,如:隊列,哈希表。特殊數據結構;
5、協議解析組件,http、json、錯誤碼;
6、音視頻相關組件:協議傳輸層,編解碼組件;
7、其它功能與業務;