ZLMediaKit资源汇总:学习资料、工具和社区资源大全

【免费下载链接】ZLMediaKit 基于C++11的WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT服务器和客户端框架。 【免费下载链接】ZLMediaKit 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit

引言:流媒体开发的痛点与解决方案

你是否还在为流媒体服务的协议兼容性头疼?是否在寻找高性能、跨平台的流媒体框架?是否需要从入门到精通的学习路径和实用工具?本文将系统梳理ZLMediaKit的全方位资源,帮助开发者快速掌握这款基于C++11的WebRTC/RTSP/RTMP/HTTP/HLS/GB28181/SRT服务器和客户端框架。

读完本文你将获得:

  • 完整的ZLMediaKit学习路线图
  • 必备开发工具与测试套件
  • 丰富的第三方集成资源
  • 商用级部署方案与最佳实践
  • 活跃社区支持与进阶学习渠道

一、项目核心概述

1.1 项目定位与架构

ZLMediaKit是一款高性能运营级流媒体服务框架,采用C++11开发,避免使用裸指针,代码稳定可靠。其架构设计遵循多路复用/多线程/异步网络IO模式,支持海量客户端连接,单机可处理10W级别播放器和100Gb/s级别IO带宽。

mermaid

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测试集合:

  1. 导入配置文件:

    • ZLMediaKit.postman_collection.json:API测试集合
    • 127.0.0.1.postman_environment.json:本地环境配置
  2. 测试流程:

    • 选择"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 问题排查指南

常见问题及解决方法:

  1. 流无法播放

    • 检查流是否存在:curl http://127.0.0.1:8080/index/api/getMediaList?secret=xxx
    • 检查防火墙设置,确保端口开放
    • 查看日志文件,定位错误原因
  2. 延迟过高

    • 调整WebRTC jitter buffer大小
    • 启用低延迟模式
    • 优化网络环境,减少网络抖动
  3. 性能问题

    • 检查CPU/内存使用情况
    • 调整工作线程数
    • 启用内存池与资源复用

结语:开启流媒体开发之旅

ZLMediaKit作为一款功能全面、性能优越的流媒体框架,提供了从协议支持到应用开发的完整解决方案。通过本文汇总的学习资料、开发工具和社区资源,开发者可以快速上手并深入掌握流媒体开发技术。

无论是构建企业级直播平台、安防监控系统,还是开发实时音视频应用,ZLMediaKit都能提供稳定可靠的技术支持。立即开始探索,开启你的流媒体开发之旅!

【免费下载链接】ZLMediaKit 基于C++11的WebRTC/RTSP/RTMP/HTTP/HLS/HTTP-FLV/WebSocket-FLV/HTTP-TS/HTTP-fMP4/WebSocket-TS/WebSocket-fMP4/GB28181/SRT服务器和客户端框架。 【免费下载链接】ZLMediaKit 项目地址: https://gitcode.com/GitHub_Trending/zl/ZLMediaKit

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐