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