三方库 - 音视频/ZLMediaKit
基于 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