基于 C++11 的高性能运营级流媒体服务框架; 支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/WebSocket-FLV/GB28181/HTTP-TS/WebSocket-TS/HTTP-fMP4/WebSocket-fMP4/MP4/WebRTC),支持协议互转; 使用多路复用/多线程/异步网络 IO 模式开发,并发性能优越,支持海量客户端连接; 支持 linux、macos、ios、android、windows 全平台; 支持画面秒开、极低延时(500 毫秒内,最低可达 100 毫秒)。 |
![]() |
一、ZLMediaKit环境搭建(Windows)
vcpkg.exe install zlmediakit |
二、ZLMediaKit环境搭建(Linux)
1、环境依赖
ZLMediaKit 采用了 C++11 的语法和库,要求编译器支持完整的 C++11 标准: Linux: gcc >= 4.8 sudo apt install build-essential |
ZLMediaKit 采用 CMake 来构建项目,所以编译需要 CMake: sudo apt install cmake |
2、克隆代码
# 国内用户推荐从 Gitee 下载 git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit # 初始化子模块 (必须执行) git submodule update --init |
注意:不能通过下载 zip 包的方式下载源码,因为 ZLMediaKit 依赖于第三方代码并通过 Git 子模块的方式管理。 |
3、安装依赖库
ZLMediaKit 依赖一些可选的第三方库,构建时,CMake 将在 path 中查找这些库,并根据检测情况决定是否开启相关特性。 |
除了 openssl,其他都是可选的: sudo apt install libssl-dev sudo apt install libsdl-dev sudo apt install libavcodec-dev sudo apt install libavutil-dev sudo apt install ffmpeg |
4、编译/构建
cd ZLMediaKit mkdir build cd build cmake .. make -j4 |
三、ZLMediaKit文档
https://docs.zlmediakit.com/zh/guide/#%E9%A1%B9%E7%9B%AE%E7%89%B9%E7%82%B9 |
四、ZLMediaKit运行
主要生成 3 种二进制目标文件,生成路径在 release 目录下: |
MediaServer 进程(服务器主进程,该进程可以在免去开发的情况下直接作为测试流媒体服务器使用): cd ZLMediaKit/release/linux/Debug # 通过 -h 可以了解启动参数 ./MediaServer -h # 以守护进程模式启动 ./MediaServer -d & |
C 接口的 SDK: 头文件位于ZLMediaKit/api/include ZLMediaKit/release/linux/Debug/libmk_api.so |
五、ZLMediaKit配置文件
默认配置文件在:ZLMediaKit/conf/config.ini 该配置文件在执行cmake时,会拷贝至release/${操作系统类型}/${编译类型}(例如release/linux/Debug) 文件夹 |
检查http端口: |
六、ZLMediaKit控制台
1、控制台访问
http://服务器IP:PORT
2、swagger页面
3、webassist页面
七、ZLMediaKit流媒体服务
1、resful接口
MediaServer 是 ZLMediaKit 的主进程,目前支持以下 http api 接口,这些接口全部支持 GET/POST 方式: https://docs.zlmediakit.com/zh/guide/media_server/restful_api.html |
2、webhook接口
MediaServer 可以把内部的一些事件通过 http post 第三方 http 服务器的方式通知出去,以下是相关的默认配置: https://docs.zlmediakit.com/zh/guide/media_server/web_hook_api.html |
3、按需拉流
4、按需推流
5、推流鉴权
6、播放鉴权
7、推流播放测试
ZLMediaKit 支持 rtsp/rtmp/rtp 推流。 |
# rtsp 方式推流
# h264推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test # h265推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtsp -rtsp_transport tcp rtsp://127.0.0.1/live/test |
# rtmp 方式推流
#如果未安装FFmpeg,也可以用obs推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f flv rtmp://127.0.0.1/live/test # RTMP标准不支持H265,但是国内有自行扩展的,如果想让FFmpeg支持RTMP-H265,请按照此文章编译:https://github.com/ksvc/FFmpeg/wiki/hevcpush |
# rtp 方式推流
# h264推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h264 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000 # h265推流 ffmpeg -re -i "/path/to/test.mp4" -vcodec h265 -acodec aac -f rtp_mpegts rtp://127.0.0.1:10000 |