ZLMediaKit 开发和使用教程
【免费下载链接】ZLMediaKit 项目地址: https://gitcode.com/gh_mirrors/zlm/ZLMediaKit
1. 项目介绍
ZLMediaKit 是一个基于 C++11 开发的高性能流媒体服务框架,支持多种流媒体协议,如 RTSP/RTMP/HLS/HTTP-FLV 等,具有高性能、高并发、低延迟的特点。该框架适用于移动嵌入式跨平台流媒体解决方案、商用级流媒体服务器以及网络编程二次开发。
2. 项目快速启动
环境准备
- 操作系统:Linux、MacOS、Windows
- 编译工具:CMake 3.3.2+
- 开发语言:C++11
编译和安装
# 克隆项目
git clone https://github.com/xia-chu/ZLMediaKit.git
# 进入项目目录
cd ZLMediaKit
# 创建构建目录
mkdir build && cd build
# 使用 CMake 配置项目
cmake ..
# 编译项目
make
# 安装(可选)
make install
运行示例
编译成功后,可以运行示例程序进行测试。
# 运行流媒体服务器
./MediaServer
# 运行 RTSP 客户端
./RtspClient url=rtsp://example.com/stream
# 运行 RTMP 客户端
./RtmpClient url=rtmp://example.com/stream
3. 应用案例和最佳实践
RTSP/RTMP 互转
ZLMediaKit 支持将 RTSP 流转换为 RTMP 流,或者将 RTMP 流转换为 RTSP 流。以下是一个简单的转换示例:
// 创建 RTSP 服务器
auto rtspServer = std::make_shared<RtspServer>(config);
// 创建 RTMP 服务器
auto rtmpServer = std::make_shared<RtmpServer>(config);
// 将 RTSP 流转换为 RTMP 流
rtspServer->onRtspSessionConnected([](RtspSessionPtr session) {
auto rtmpSession = rtmpServer->createSession(session->getStreamPath());
session->setForwardSession(rtmpSession);
});
// 将 RTMP 流转换为 RTSP 流
rtmpServer->onRtmpSessionConnected([](RtmpSessionPtr session) {
auto rtspSession = rtspServer->createSession(session->getStreamPath());
session->setForwardSession(rtspSession);
});
HLS 点播
ZLMediaKit 支持生成 HLS 点播文件,以下是一个生成 HLS 文件的示例:
// 创建 HLS 播发器
auto hlsPublisher = std::make_shared<HlsPublisher>(config);
// 设置 HLS 文件路径
hlsPublisher->setOutputPath("/path/to/hls/stream.m3u8");
// 开始推流
hlsPublisher->startPublish("rtmp://example.com/stream");
4. 典型生态项目
以下是一些基于 ZLMediaKit 开发的典型生态项目:
- wvp-GB28181-pro:基于 Java 实现的开箱即用的 GB28181 协议视频平台。
- AKStream:基于 C# 实现的全功能软 NVR 接口/GB28181 平台。
- BXC_SipServer:基于 C++ 实现的国标 GB28181 流媒体信令服务器。
- gosip:基于 Golang 实现的 GB28181 服务器。
- FreeEhome:基于 Golang 实现的海康 ehome 服务器。
【免费下载链接】ZLMediaKit 项目地址: https://gitcode.com/gh_mirrors/zlm/ZLMediaKit
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



