ZLMediaKit资源汇总:学习资料、工具和社区资源大全
你是否还在为流媒体服务的协议兼容性头疼?是否在寻找高性能、跨平台的流媒体框架?是否需要从入门到精通的学习路径和实用工具?本文将系统梳理ZLMediaKit的全方位资源,帮助开发者快速掌握这款基于C++11的WebRTC/RTSP/RTMP/HTTP/HLS/GB28181/SRT服务器和客户端框架。读完本文你将获得:- 完整的ZLMediaKit学习路线图- 必备开发工具与测试套件- 丰...
ZLMediaKit资源汇总:学习资料、工具和社区资源大全
引言:流媒体开发的痛点与解决方案
你是否还在为流媒体服务的协议兼容性头疼?是否在寻找高性能、跨平台的流媒体框架?是否需要从入门到精通的学习路径和实用工具?本文将系统梳理ZLMediaKit的全方位资源,帮助开发者快速掌握这款基于C++11的WebRTC/RTSP/RTMP/HTTP/HLS/GB28181/SRT服务器和客户端框架。
读完本文你将获得:
- 完整的ZLMediaKit学习路线图
- 必备开发工具与测试套件
- 丰富的第三方集成资源
- 商用级部署方案与最佳实践
- 活跃社区支持与进阶学习渠道
一、项目核心概述
1.1 项目定位与架构
ZLMediaKit是一款高性能运营级流媒体服务框架,采用C++11开发,避免使用裸指针,代码稳定可靠。其架构设计遵循多路复用/多线程/异步网络IO模式,支持海量客户端连接,单机可处理10W级别播放器和100Gb/s级别IO带宽。
1.2 协议支持矩阵
| 协议类型 | 功能支持 | 编码支持 | 传输方式 |
|---|---|---|---|
| RTSP[S] | 服务器/播放器/推流客户端 | H264/H265/AAC/G711/OPUS/MP3 | UDP/TCP/HTTP/组播 |
| RTMP[S] | 播放/发布服务器/播放器/推流客户端 | H264/H265/AAC/G711/OPUS/MP3 | 标准RTMP/HTTP-FLV/WebSocket-FLV |
| HLS | 文件生成/HTTP服务器/播放器 | H264/H265/AAC/G711/OPUS/MP3 | MPEGTS/FMP4格式 |
| WebRTC | 推流/播放/回声测试 | H264/H265/OPUS | UDP/TCP |
| SRT | 推流/拉流 | TS封装 | 低延迟可靠传输 |
| GB28181 | 设备注册/实时视音频/语音对讲 | H264/H265/AAC/G711 | UDP/TCP |
二、学习资料大全
2.1 官方文档与快速入门
2.1.1 编译指南
ZLMediaKit支持多平台编译,以下是Linux平台的快速编译步骤:
# 安装依赖
sudo apt-get update && sudo apt-get install -y git g++ make cmake libssl-dev libsdl-dev libavcodec-dev libavutil-dev
# 获取代码
git clone https://gitcode.com/GitHub_Trending/zl/ZLMediaKit
cd ZLMediaKit
git submodule update --init
# 编译
mkdir build && cd build
cmake ..
make -j4
# 运行媒体服务器
cd ../release/linux/Debug
./MediaServer -d &
2.1.2 配置文件详解
配置文件config.ini位于conf目录下,核心配置项说明:
[api]
# API访问密钥
secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
# API HTTP端口
apiPort=8080
[rtmp]
# RTMP端口
port=1935
# 是否启用RTMP SSL
ssl=0
# SSL端口
sslPort=19350
[webrtc]
# WebRTC端口
port=8000
# 是否启用TCP模式
tcp=1
# 最大jitter buffer大小(毫秒)
jitterBuffer=200
2.2 核心功能教程
2.2.1 推流与拉流示例
RTMP推流示例:
# 使用ffmpeg推流
ffmpeg -re -i test.mp4 -c:v libx264 -c:a aac -f flv rtmp://127.0.0.1/live/test
WebRTC播放示例:
// 使用内置的ZLMRTCClient.js
var client = new ZLMRTCClient();
client.on('onPlay', function(stream) {
var video = document.getElementById('video');
client.attachMediaStream(video, stream);
});
client.play('live/test');
2.2.2 SRT协议使用指南
SRT协议支持低延迟可靠传输,使用方法:
推流命令:
# SRT推流示例
ffmpeg -re -stream_loop -1 -i test.ts -c:v copy -c:a copy -f mpegts "srt://127.0.0.1:9000?streamid=#!::r=live/test,m=publish"
拉流命令:
# SRT拉流示例
ffplay -i "srt://127.0.0.1:9000?streamid=#!::r=live/test"
2.3 API文档与开发指南
2.3.1 RESTful API使用
ZLMediaKit提供完整的RESTful API,以下是常用接口:
获取流列表:
curl http://127.0.0.1:8080/index/api/getMediaList?secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc
录制控制:
# 开始录制
curl -X POST http://127.0.0.1:8080/index/api/startRecord \
-d "secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc&vhost=__defaultVhost__&app=live&stream=test"
2.3.2 C API开发
ZLMediaKit提供标准C API,可作为SDK使用:
#include "zlmediakit/api/mediakit.h"
// 创建媒体源
MK_MediaSource *create_media_source() {
MK_MediaSource *source = MK_MediaSource_create("__defaultVhost__", "live", "test", 0);
if (!source) return NULL;
// 添加视频轨道
MK_VideoTrack *video_track = MK_VideoTrack_create_H264(96, 1280, 720, 25);
MK_MediaSource_addTrack(source, (MK_Track *)video_track);
// 添加音频轨道
MK_AudioTrack *audio_track = MK_AudioTrack_create_AAC(97, 44100, 2);
MK_MediaSource_addTrack(source, (MK_Track *)audio_track);
return source;
}
三、开发工具集
3.1 测试工具
3.1.1 内置测试程序
ZLMediaKit提供丰富的测试程序,位于tests目录下:
| 测试程序 | 用途 | 使用场景 |
|---|---|---|
| test_bench_forward | 转发性能测试 | 评估服务器转发能力 |
| test_httpApi | HTTP API测试 | 验证API功能完整性 |
| test_pusher | 推流测试客户端 | 测试推流功能 |
| test_pusherMp4 | MP4文件推流测试 | 测试文件转推功能 |
| test_server | 协议服务器测试 | 验证各协议服务 |
| test_wsServer | WebSocket测试 | WebSocket协议验证 |
运行测试程序示例:
# 运行RTSP/RTMP性能测试
./test_bench_forward -c 100 -u rtsp://127.0.0.1/live/test
3.1.2 Postman接口测试
Postman配置文件位于postman目录,包含完整的API测试集合:
-
导入配置文件:
ZLMediaKit.postman_collection.json:API测试集合127.0.0.1.postman_environment.json:本地环境配置
-
测试流程:
- 选择"ZLMediaKit"集合
- 选择"127.0.0.1"环境
- 按目录结构测试各类API接口
3.2 部署与运维工具
3.2.1 Docker部署
使用Docker快速部署ZLMediaKit:
# 运行官方镜像
docker run -id -p 1935:1935 -p 8080:80 -p 8443:443 -p 8554:554 \
-p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp \
zlmediakit/zlmediakit:master
自定义构建Docker镜像:
# 执行构建脚本
bash build_docker_images.sh
3.2.2 监控工具
ZLMediaKit_exporter:Prometheus监控指标导出器,搭配Grafana可构建实时监控面板。
监控指标包括:
- 连接数(总连接数、各协议连接数)
- 流信息(在线流数量、各协议流数量)
- 流量统计(入站/出站流量)
- 系统资源(CPU/内存使用率)
四、社区资源汇总
4.1 合作项目与生态系统
4.1.1 视频管理平台
| 项目名称 | 技术栈 | 功能特点 |
|---|---|---|
| wvp-GB28181-pro | Java | 开箱即用的GB28181协议视频平台 |
| AKStream | C# | 全功能软NVR接口/GB28181平台 |
| BXC_SipServer | C++ | 国标GB28181流媒体信令服务器 |
| gosip | Go | Golang实现的GB28181服务器 |
| FreeEhome | Go | 海康ehome协议服务器 |
4.1.2 播放器与客户端
- h265web.js:基于wasm的H265播放器,支持多种专属协议
- jessibuca:基于wasm的H265播放器,低延迟高性能
- wsPlayer:基于MSE的WebSocket-FMP4播放器
- BXC_gb28181Player:C++开发的GB28181播放器
- RTCPlayer:Android平台RTC播放器
4.1.3 SDK与集成工具
| SDK类型 | 语言 | 功能 |
|---|---|---|
| spring-boot-starter | Java | Spring Boot集成starter |
| java sdk | Java | C API完整Java包装库 |
| c# sdk | C# | C API完整C#包装库 |
| metaRTC | C | 纯C WebRTC SDK |
4.2 学习与交流渠道
4.2.1 官方支持
- 官方文档:获取最新消息推送
- 技术社区:技术支持与资料获取
- Issue跟踪:项目问题反馈与解答
4.2.2 技术文档与教程
- 官方Wiki:详细的功能说明与使用指南
- API文档:完整的RESTful API与WebHook文档
- 示例代码:丰富的使用示例与场景演示
五、进阶资源与专业支持
5.1 专业版功能
ZLMediaKit提供专业版,在开源版基础上新增功能:
5.1.1 转码版本
- 音视频任意转码(H265/H264/OPUS/G711等)
- 基于配置文件和HTTP API的动态转码
- 硬件/软件自适应转码
- 按需转码与透明转码模式
- 滤镜与OSD文本/logo叠加
- GPU硬件编解码与滤镜
- 视频全GPU推理插件,支持AI识别
5.1.2 JT1078部标版本
- 支持JT1078推流转其他协议
- JT1078级联与对讲功能
- 自适应音视频共享SEQ模式
- 多编码支持(H264/H265/G711等)
5.2 应用案例与最佳实践
ZLMediaKit已被多家公司采用,包括互联网公司、云服务公司、AI企业等,应用场景:
- 视频监控直播系统
- 互联网直播平台
- 视频会议系统
- 安防监控平台
- 在线教育系统
- 物联网视频传输
六、资源速查表
6.1 常用命令汇总
| 操作类型 | 命令示例 | 说明 |
|---|---|---|
| 编译 | make -j4 |
多线程编译 |
| 运行服务器 | ./MediaServer -d |
后台运行媒体服务器 |
| RTMP推流 | ffmpeg -re -i test.mp4 -f flv rtmp://127.0.0.1/live/test |
使用ffmpeg推流 |
| HLS播放 | ffplay http://127.0.0.1/live/test/hls.m3u8 |
HLS流播放 |
| WebRTC播放 | ./test_player -u webrtc://127.0.0.1/live/test |
WebRTC测试播放 |
| SRT推流 | ffmpeg -i test.ts -f mpegts "srt://127.0.0.1:9000?streamid=#!::r=live/test,m=publish" |
SRT协议推流 |
6.2 问题排查指南
常见问题及解决方法:
-
流无法播放
- 检查流是否存在:
curl http://127.0.0.1:8080/index/api/getMediaList?secret=xxx - 检查防火墙设置,确保端口开放
- 查看日志文件,定位错误原因
- 检查流是否存在:
-
延迟过高
- 调整WebRTC jitter buffer大小
- 启用低延迟模式
- 优化网络环境,减少网络抖动
-
性能问题
- 检查CPU/内存使用情况
- 调整工作线程数
- 启用内存池与资源复用
结语:开启流媒体开发之旅
ZLMediaKit作为一款功能全面、性能优越的流媒体框架,提供了从协议支持到应用开发的完整解决方案。通过本文汇总的学习资料、开发工具和社区资源,开发者可以快速上手并深入掌握流媒体开发技术。
无论是构建企业级直播平台、安防监控系统,还是开发实时音视频应用,ZLMediaKit都能提供稳定可靠的技术支持。立即开始探索,开启你的流媒体开发之旅!
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)