ZLMediaKit 的安装及使用介绍
一、概述
ZLMediaKit是一个基于C++11开发的高性能开源流媒体服务器,提供了强大的音视频处理能力。它支持多种流媒体协议,具有低延迟和高并发处理能力,适用于构建实时音视频传输和处理的应用,如直播、视频会议、视频监控等场景。
二、核心特性
2.1 技术特点
高性能架构:
- 基于C++11开发,避免使用裸指针,代码稳定可靠
- 采用多路复用/多线程异步网络IO模式
- 支持海量客户端连接,并发性能优越
协议支持:
- 支持RTSP、RTMP、HLS、HTTP-FLV、Websocket-FLV、GB28181、MP4
- 支持协议间相互转换
- 打通视频监控协议栈与直播协议栈
编码支持:
- 全面支持H265/H264/AAC/G711/OPUS
- 支持动态转码
平台兼容:
- 支持Linux、macOS、iOS、Android、Windows全平台
- 提供标准C API,可作为SDK供其他语言调用
2.2 性能优势
- 低延迟:500毫秒内,最低可达100毫秒
- 秒开体验:支持画面秒开
- 高稳定性:代码经过长期大量稳定性、性能测试,已在线上商用验证
三、Linux环境安装
3.1 环境准备
1 | # 安装编译工具 |
3.2 源码获取与编译
1 | # 国内用户推荐从gitee下载 |
3.3 运行服务
1 | cd ZLMediaKit/release/linux/Debug |
四、HTTP API使用
4.1 API概览
ZLMediaKit提供完善的RESTful API和WebHook,支持丰富的业务逻辑控制。
访问API列表:
1 | http://127.0.0.1/index/api/getApiList |
常用API接口:
/index/api/getServerConfig- 获取服务器配置/index/api/getMediaList- 获取流列表
4.2 功能实现
通过HTTP API可以实现以下功能:
- 流媒体控制:启动和停止播放、推流
- 状态监控:获取连接数、运行状态、带宽使用情况
- 统计信息:获取码率、帧率、丢包率等统计数据
- 参数配置:设置网络端口、转码参数、录制参数
- 录制管理:控制录制和截图功能
- 日志查看:实时监控服务器运行状态
五、推流操作
5.1 FFmpeg推流示例
UDP推流
1 | ffmpeg -re -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream |
TCP推流
1 | ffmpeg -re -i input.mp4 -c copy -rtsp_transport tcp -f rtsp rtsp://127.0.0.1:8554/stream |
循环推流
1 | ffmpeg -re -stream_loop -1 -i input.mp4 -c copy -f rtsp rtsp://127.0.0.1:8554/stream |
参数说明:
-re:以流的方式读取-stream_loop -1:无限循环读取视频源-rtsp_transport tcp:使用TCP传输协议
5.2 实际应用示例
1 | # TCP方式推流到远程服务器 |
六、点播功能实现
6.1 配置点播服务
ZLMediaKit的点播功能主要通过MP4文件实现:
- 文件放置:将MP4文件放置在
www/record目录下 - 路径配置:可在
config.ini中修改默认路径 - 访问方式:支持HTTP、RTSP、RTMP、HTTP-FLV、Websocket-FLV协议
6.2 点播访问示例
RTSP点播:
1 | rtsp://服务器IP:端口/record/文件名.mp4 |
HTTP点播:
1 | http://服务器IP:端口/文件相对路径 |
6.3 点播文件处理
1 | # 拉取点播文件并保存到本地 |
七、拉流与播放
7.1 使用FFplay播放
1 | # 播放RTSP流 |
7.2 使用VLC播放
安装VLC播放器后,通过”媒体”→”打开网络串流”输入流地址即可播放。
7.3 流录制保存
1 | # 拉流保存为MP4文件(设置30秒超时) |
注意:-stimeout参数必须放在RTSP地址之前,单位为微秒。
八、音频设备操作
8.1 查看音频设备
1 | # 查看音频设备列表 |
设备标识说明:
hw:0:第一个音频设备hw:1:第二个音频设备default:默认音频设备
8.2 音频录制与播放
录音操作
1 | # 基本录音 |
播放操作
1 | # 使用aplay播放 |
8.3 设备配置脚本
麦克风输入配置(mic_in_config.sh):
1 |
|
线路输入配置(line_in_config.sh):
1 |
|
九、服务推拉流实例
9.1 音频推流
1 | # 向服务器推送音频流 |
9.2 音频拉流播放
1 | # 从服务器拉取音频流并播放 |
十、系统管理
10.1 查看端口占用
1 | # 查看指定端口占用情况 |
netstat参数说明:
-t:显示TCP相关选项-u:显示UDP相关选项-n:显示数字地址-l:仅显示监听状态-p:显示进程名
10.2 进程管理
1 | # 查找占用端口的进程 |
十一、总结
ZLMediaKit作为一个功能强大的开源流媒体服务器,具有以下优势:
- 协议全面:支持主流流媒体协议及协议转换
- 性能优越:低延迟、高并发、跨平台
- 易于集成:提供完善的API和SDK接口
- 稳定可靠:经过大量线上环境验证
通过本文介绍的安装配置、推拉流操作、点播功能实现等内容,用户可以快速上手使用ZLMediaKit构建自己的流媒体服务系统。
注意事项:
- 编译时务必执行
git submodule update --init - 生产环境建议配置防火墙和安全策略
- 定期更新版本以获取安全修复和性能优化
参考资源:




