一 ZLMediaKit 库简介

ZLMediaKit 是一个基于C++11的高性能运营级流媒体服务框架

官方写的项目特点:

基于C++11开发,避免使用裸指针,代码稳定可靠,性能优越。

支持多种协议(RTSP/RTMP/HLS/HTTP-FLV/Websocket-FLV/GB28181/MP4),支持协议互转。

使用多路复用/多线程/异步网络IO模式开发,并发性能优越,支持海量客户端连接。

代码经过长期大量的稳定性、性能测试,已经在线上商用验证已久。 支持linux、macos、ios、android、windows全平台。

支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。 提供完善的标准C API,可以作SDK用,或供其他语言调用。

提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。 提供完善的restful api以及web hook,支持丰富的业务逻辑。 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。

全面支持H265/H264/AAC/G711/OPUS。

其功能非常多,支持RTSP、RTMP[S]、HLS、GB28181等多种流媒体格式。

二 Linux编译

测试环境:

[root@taishan-atlas ~]# cat /etc/redhat-release  

CentOS Linux release 7.9.2009 (AltArch)

OpenSSL版本:

[root@taishan-atlas ~]# openssl version

OpenSSL 1.0.2k-fips  26 Jan 2017

cmake版本:

[root@taishan-atlas ~]# cmake -version

cmake version 3.9.2

#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
# 构建和编译项目
cd ZLMediaKit
mkdir build
cd build
cmake ..
# 如果编译release版本 使用 cmake .. -DCMAKE_BUILD_TYPE=Release
make -j4

三Windows编译

成功编译的OpenSSL版本:

OpenSSL 1.1.1w  11 Sep 2023

OpenSSL 1.0.2t  10 Sep 2019

由于OpenSSL版本太低,会提示出错:

无法解析的外部符号 _OPENSSL_init_crypto

四编译结果

编译完成后,生成release目录 , 主要的目标文件有三种

1. MedisServer

cd ZLMediaKit/release/linux/Debug

#通过-h可以了解启动参数

./MediaServer -h

#以守护进程模式启动

./MediaServer -d &

四 推流测试

使用FFmpeg进行推流

ffmpeg -rtsp_transport tcp  -i  rtsp://admin:admin12345@192.168.28.136:554/h264/ch1/main/av_stream  -f flv  rtmp://192.168.12.208:1935/live/home

点播的方式有如下:

ws://192.168.12.208/live/home.live.flv

备注:旧版本代码没有.live:[ws://192.168.12.208/live/home.flv]

http://192.168.12.208/live/home.flv

WEB播放插件参考https://github.com/xqq/mpegts.js/blob/master/docs/api.md

五 MP4文件测试

拷贝一个MP4文件到ZLMediaKit/release/linux/Debug/www/record目录

就可以通过HTTP直接访问

http://192.168.12.208/record/output.mp4