3.6 KiB
3.6 KiB
ZLMediaKit 架构文档
1. 项目概述
ZLMediaKit 是一个高性能流媒体服务器框架,支持 RTMP/RTSP/WebRTC/SRT 等多种协议,采用 C++11 编写,具有跨平台、高并发、低延迟等特点。
2. 核心模块架构
2.1 基础设施层
-
3rdpart/ZLToolKit- 网络库基础:提供 Socket、EventPoller 等核心组件
- 内存管理:ObjectPool 对象池实现
-
src/Common- 配置系统:config.cpp 实现
MediaServer配置项管理 - 工具集:Util.cpp 提供时间处理、Base64 编码等通用功能
- 日志系统:Logger.cpp 实现多级日志输出
- 配置系统:config.cpp 实现
2.2 协议处理层
RTMP 协议栈
src/Rtmp- 协议解析:RtmpProtocol.cpp 实现 AMF0 解析
- 会话管理:RtmpSession.cpp 处理推流/拉流会话
- 转发服务:RtmpMuxer.cpp 实现流媒体转发
RTSP 协议栈
src/Rtsp- 信令处理:RtspSession.cpp 实现 SETUP/PLAY/TEARDOWN 等方法
- 传输层:RtpProcess.cpp 处理 RTP/RTCP 传输
WebRTC 协议栈
webrtc目录- 信令交互:WebRtcSignalingSession.cpp
- 媒体传输:DtlsTransport.cpp 和 SrtpSession.cpp
- ICE 处理:IceTransport.cpp
SRT 协议支持
srt目录- 核心传输:SrtTransport.cpp
- 会话管理:SrtSession.cpp
- 重传机制:NackContext.cpp
2.3 媒体处理层
编解码模块
-
ext-codec目录- 视频编解码:H264.cpp 和 H265.cpp
- 音频编解码:AAC.cpp 和 G711.cpp
- 封装处理:H264Rtmp.cpp 实现 RTMP 封装
-
src/Codec目录- 软件编解码:SoftDecoder.cpp
- 硬件加速:Hardware.cpp
流媒体处理
-
src/Player- 播放器核心:PlayerBase.cpp
- 协议适配:RtspPlayer.cpp
-
src/Pusher- 推流器实现:RtmpPusher.cpp
- 协议转换:FlvMuxer.cpp
2.4 服务管理层
-
server目录- 主服务入口:main.cpp
- Web API:WebApi.cpp 实现 RESTful 接口
- 事件回调:WebHook.cpp 处理业务事件
-
api目录- 接口定义:include/api-api.h
- 测试用例:tests/test_httpApi.cpp
3. 扩展能力
player目录:SDL 音频输出 (SDLAudioDevice.cpp) 和 YUV 渲染FFmpegSource.cpp:基于 FFmpeg 的媒体源处理docker支持:通过 build_docker_images.sh 构建容器镜像
4. 测试体系
tests目录:协议测试 (test_rtmp.cpp) 和性能测试 (test_bench.cpp)postman集合:ZLMediaKit.postman_collection.json 提供 API 测试用例