└── 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、其它功能与业务;