1. 简介
ZL是开源的流媒体服务项目,具备如下特性:
- 基于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全平台。
- 支持x86、arm、risc-v、mips、龙芯、申威等指令集平台。
- 支持画面秒开、极低延时(500毫秒内,最低可达100毫秒)。
- 提供完善的标准C API,可以作SDK用,或供其他语言调用。
- 提供完整的MediaServer服务器,可以免开发直接部署为商用服务器。
- 提供完善的restful api以及web hook,支持丰富的业务逻辑。
- 打通了视频监控协议栈与直播协议栈,对RTSP/RTMP支持都很完善。
- 全面支持H265/H264/AAC/G711/OPUS。
- 功能完善,支持集群、按需转协议、按需推拉流、先播后推、断连续推等功能。
- 极致性能,单机10W级别播放器,100Gb/s级别io带宽能力。
- 全面支持ipv6网络
2. 准备工作
系统环境:Centos7.9
编译ZL项目前需要预安装的依赖包有:gcc,gcc-c++,cmake(3.1版本以上),nasm(2.10版本以上),yasm,ffmpeg,x264(可选),openssl(可选),pkg-config等。大部分依赖包已经上传到个人下载资源中,点击链接进行下载。
各依赖包具体的编译参数和方法请自寻查询,这里就不细写了。正常来说可以直接通过yum安装或者下载包后自己编译安装,执行过程基本相似:configure -> make -> make install完成安装过程。有一些需要注意的地方如下所示:
- 注意包的版本要求,低版本会编译失败,一般失败后都有错误提示。
- 如果是自定义指定的安装目录,包安装后需要配置可执行文件目录和库路径。一般有几种方式:
(1)在文件/etc/profile设置PATH(PATH=$PATH:可执行文件路径)和LD_LIBRARY_PATH(LD_LIBRARY_PATH=$LD_LIBRARY_PATH:库路径)环境变量,然后执行命令source /etc/profile。
(2)在目录/etc/ld.so.conf.d/中创建库配置文件,例如ffmpeg.conf,文件内容为库路径,保存文件后ldconfig重新加载。
(3)软链接库和可执行文件到默认的搜索路径,例如/bin, /lib64, /usr/bin, /usr/lib等。 - ffmpeg如果使用–enable-libx264参数,需要预先安装x264,并指定x264的pkgconfig目录,可以在文件/etc/profile中添加x264的pkgconfig路径到环境变量PKG_CONFIG_PATH。
3. 编译ZL
这里用的是Gitee上的资源,网络允许也可以用Github上的资源:
1.下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
2.编译
mkdir build
cd build
cmake ..
make -j4
3、运行
cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
#以自定义配置文件启动
./MediaServer -c 配置文件具体地址
(nohup ./MediaServer -c 配置文件具体地址 &)
至此我们已经完成了ZL的整个安装过程,后面我会以ZL为示例写一些流媒体服务相关的知识内容,有感兴趣的朋友动动小手,点点关注,不迷路。