一、背景
在流媒体服务器领域,SRS 的名号如雷贯耳,但另一款由国人开发的 C++ 高性能服务器 ZLMediaKit 近年在安防、IoT 和直播领域迅速崛起。它的核心定位是 高性能流媒体服务器与协议转换网关,最鲜明的技术标签是 多协议支持与国标 GB28181 的深度集成。
ZLMediaKit 采用 多线程异步事件驱动模型,基于 C++11/14 编写,全链路自主实现,不依赖任何第三方流媒体库。其最大的优势在于 协议转换能力强:你可以把一台 RTSP 网络摄像机的流实时转换成 WebRTC 让浏览器播放,或者把 RTMP 推流转发为 HLS/HTTP-FLV 分发,而这一切几乎零配置、零转码,只做协议封装层面的转换,因此性能极高,单机即可支撑数千路并发流。
支持的协议矩阵:
推流/上行:RTMP、RTSP、GB28181、WebRTC (WHIP)
拉流/下行:RTMP、RTSP、HLS、HTTP-FLV、WebSocket-FLV、WebRTC (WHEP)
国标信令:SIP 注册、目录查询、点播、录像回放
二、典型应用场景
安防监控:通过 GB28181 对接海康/大华等平台或摄像机,实现无插件 Web 观看。
协议转换网关:一台服务器解决内部系统 RTSP 无法直接输出到公网 Web 的问题(RTSP → WebRTC/HLS)。
多协议直播:兼容 OBS RTMP 推流,同时输出 HLS、FLV 用于跨平台播放。
优缺点速览:
优点:协议转换能力强、性能极其出色(纯 C++ 实现,全异步)、高并发低延迟、GB28181 支持完善。
缺点:WebRTC 功能相对基础(无 Simulcast、FEC 等高级特性),扩展性较弱(插件机制不足),文档和社区活跃度目前仍低于 SRS。
本文将以 “部署 → 配置 → 协议使用 → 国标对接 → WebRTC实战 → 性能调优” 为主线,提供一份详尽的保姆级攻略,帮助你从零到一掌握 ZLMediaKit 的生产级部署。
三、环境准备与部署
ZLMediaKit 支持 Linux/macOS,Windows 可作为测试使用但不宜上生产。推荐 Ubuntu 20.04/22.04 或 CentOS 7.9,内核版本 4.x 以上。
3.1 编译依赖安装
# Ubuntu/Debian
sudo apt update
sudo apt install -y gcc g++ cmake make libssl-dev libsdl-dev \
libavcodec-dev libavutil-dev libavformat-dev libswresample-dev
# CentOS 7 (需开启 EPEL)
sudo yum install -y epel-release
sudo yum install -y gcc gcc-c++ cmake make openssl-devel SDL-devel \
ffmpeg-devel
注:ZLMediaKit 也支持 不依赖 FFmpeg 编译,去除编解码能力,仅做流媒体转发。对于纯转发的网关场景,可以去掉 FFmpeg 减小体积,但保留它可以在需要时进行转码。
3.2 获取源码并编译
git clone https://github.com/ZLMediaKit/ZLMediaKit.git
cd ZLMediaKit
git submodule update --init --recursive # 拉取第三方依赖(如 jsoncpp、srtp 等)
mkdir build && cd build
cmake .. -DENABLE_WEBRTC=ON -DENABLE_FFMPEG=ON
make -j$(nproc)
编译完成后,可执行文件在 release/linux/Debug/MediaServer(或 Release),其运行时会自动寻找同级目录下的 config.ini。
3.3 Docker 极速部署
docker run -d --name

1446

被折叠的 条评论
为什么被折叠?



