mirror of
https://gitee.com/xia-chu/ZLMediaKit.git
synced 2026-05-08 11:57:48 +08:00
165 lines
3.9 KiB
Markdown
165 lines
3.9 KiB
Markdown
|
||
|
||
# 一个基于C++11的高性能运营级流媒体服务框架
|
||
|
||
[![License]][MIT License] [![Language]][C++ Reference]
|
||
|
||
ZLMediaKit是一个高性能流媒体开发框架,使用C++11编写,支持多种协议(RTSP/RTMP/HLS/WebRTC/SRT/DASH/HTTP-FLV等),提供丰富的API,支持多种视频编码(H.264/H.265/JPEG/VP8/VP9/AV1)和音频编码(AAC/G711/OPUS/G722/PCMU/PCMA)。
|
||
|
||
## 项目特点
|
||
|
||
- **高性能**:基于异步IO模型,支持高并发和低延迟。
|
||
- **协议丰富**:支持RTMP、RTSP、HLS、WebRTC、SRT等多种流媒体协议。
|
||
- **跨平台**:支持Linux、macOS、iOS、Android、Windows等多平台编译。
|
||
- **易于扩展**:提供多种插件机制,便于功能扩展。
|
||
- **完善的文档**:提供详细的API文档和使用示例。
|
||
|
||
## 项目定位
|
||
|
||
ZLMediaKit旨在为企业级流媒体服务提供一个高效、稳定、可扩展的解决方案,适用于在线教育、视频会议、安防监控、直播推流等多种场景。
|
||
|
||
## 功能清单
|
||
|
||
- **RTMP**
|
||
- 推流、拉流
|
||
- 支持H.264/H.265/AAC/OPUS/G711
|
||
- 支持直播、回放
|
||
- **RTSP**
|
||
- 推流、拉流
|
||
- 支持RTP/RTCP/RTCP-Bye/SRTCP
|
||
- 支持点播、暂停、快进、鉴权
|
||
- **HLS**
|
||
- 支持HLS直播与回放
|
||
- 支持fmp4与ts切片
|
||
- 支持多级目录结构
|
||
- **WebRTC**
|
||
- 支持ICE、STUN、TURN、SCTP
|
||
- 支持P2P通信
|
||
- 支持抗丢包、抗抖动
|
||
- 支持webrtc over tcp
|
||
- **SRT**
|
||
- 支持SRT推流和拉流
|
||
- 支持SRT over UDP
|
||
- 支持加密传输
|
||
- **DASH**
|
||
- 支持MPD直播与回放
|
||
- **HTTP-FLV**
|
||
- 支持HTTP-FLV直播
|
||
- **录像**
|
||
- 支持MP4录像
|
||
- 支持H.264/H.265/AAC/G711
|
||
- **协议转换**
|
||
- 支持RTMP转RTSP、RTMP转HLS等
|
||
- **高性能网络**
|
||
- 支持epoll、kqueue、iocp等高性能IO模型
|
||
- 支持自定义线程池
|
||
|
||
## 闭源专业版
|
||
|
||
闭源专业版提供更丰富的功能,包括:
|
||
- 更强大的转码功能
|
||
- 更完善的鉴权机制
|
||
- 更丰富的RESTful API
|
||
- 更友好的调试工具
|
||
|
||
## 编译以及测试
|
||
|
||
### 系统要求
|
||
|
||
- **Linux**
|
||
- GCC 5.2+ 或更高
|
||
- CMake 3.1+ 或更高
|
||
- **macOS**
|
||
- Xcode 或 CLT 安装
|
||
- **Windows**
|
||
- Visual Studio 2015 Update 3 或更高
|
||
- **Android**
|
||
- NDK r17c 或更高
|
||
- **iOS**
|
||
- Xcode 或 NDK
|
||
|
||
### 编译方式
|
||
|
||
#### 在Linux上编译
|
||
|
||
1. 安装GCC 5.2+(若GCC版本低于4.7)。
|
||
2. 安装CMake(若CMake版本低于3.1)。
|
||
3. 切换到更高版本的GCC。
|
||
4. 执行以下命令进行编译:
|
||
```bash
|
||
mkdir build
|
||
cd build
|
||
cmake ..
|
||
make
|
||
```
|
||
|
||
#### 在macOS上编译
|
||
|
||
```bash
|
||
mkdir build
|
||
cd build
|
||
cmake ..
|
||
make
|
||
```
|
||
|
||
#### 在iOS上编译
|
||
|
||
```bash
|
||
cd build
|
||
cmake -DCMAKE_TOOLCHAIN_FILE=../cmake/ios.toolchain.cmake ..
|
||
make
|
||
```
|
||
|
||
#### 在Android上编译
|
||
|
||
使用Android NDK编译,确保NDK版本符合要求。
|
||
|
||
#### 在Windows上编译
|
||
|
||
使用Visual Studio 2015或更高版本打开项目文件进行编译。
|
||
|
||
## 怎么使用
|
||
|
||
### 二进制文件下载
|
||
|
||
提供二进制文件下载链接,支持多种平台。
|
||
|
||
### Docker 镜像
|
||
|
||
持续集成自动编译推送,与代码保持同步。详细部署方式请参考[k8s部署建议](./k8s_readme.md)。
|
||
|
||
## 合作项目
|
||
|
||
- [MediaSoup][MediaSoup GitHub]
|
||
- [FFmpeg][FFmpeg Official Site]
|
||
|
||
## 授权协议
|
||
|
||
ZLMediaKit采用[MIT License](./LICENSE),详细请查看项目根目录下的`LICENSE`文件。
|
||
|
||
## 联系方式
|
||
|
||
- 邮箱:zlmediakit@163.com
|
||
- QQ群:557078143
|
||
|
||
## 怎么提问?
|
||
|
||
请参考[如何提问?](./.github/ISSUE_TEMPLATE/compile.md)
|
||
|
||
## 特别感谢
|
||
|
||
感谢[MediaSoup](https://github.com/versatica/mediasoup)开源项目。
|
||
|
||
## 使用案例
|
||
|
||
- 视频会议系统
|
||
- 在线教育平台
|
||
- 安防视频监控平台
|
||
- 直播平台
|
||
|
||
[License]: https://img.shields.io/badge/license-MIT-green.svg
|
||
[MIT License]: https://github.com/ZLMediaKit/ZLMediaKit/blob/master/LICENSE
|
||
[Language]: https://img.shields.io/badge/language-c++-red.svg
|
||
[C++ Reference]: https://en.cppreference.com/
|
||
[MediaSoup GitHub]: https://github.com/versatica/mediasoup
|
||
[FFmpeg Official Site]: https://ffmpeg.org/ |