【亲测免费】 ZLMediaKit 开发和使用教程

ZLMediaKit 开发和使用教程

【免费下载链接】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 【免费下载链接】ZLMediaKit 项目地址: https://gitcode.com/gh_mirrors/zlm/ZLMediaKit

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值