一、需求描述,调研分析:
搭建一个视频汇聚转发平台,实现将多个国标GB28181的摄像头的视频,进行收集,进行转发出去。需要高效稳定。
为了避免重复造轮子,尽快实现这样的需求,考察了几个视频转发的项目,选中了ZLMediaKit这个项目,为主要的核心后端。
项目地址 https://github.com/ZLMediaKit/ZLMediaKit
配套项目 https://github.com/ireader/media-server 提供了基础的视频能力
按照其官方给到的功能示意图,理论上其基本可以满足我这里的功能需求
官方给到几个上下游的项目,其中就有专门针对流管理的项目
如图,就有5个配套的流媒体管理的UI项目可供选择。
看上去第一个”GB28181完整解决方案”的这个比较受欢迎,项目地址 https://github.com/648540858/wvp-GB28181-pro ,那么这次,就选用这个项目作为UI前端进行尝试。
二、软件实施部署环节
2.1、手工方式配置后端ZLMediaKit,以便熟悉功能模块。
-- 本次实施的环境是2U物理服务器,操作系统为Debian 10 Buster amd64 2.1.1 获取代码 apt-get update apt-get install git mkdir -p /root/src/ cd /root/src/ git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit cd ZLMediaKit -- 千万不要忘记执行这句命令 git submodule update --init 2.1.2 安装编译器 apt-get install build-essential gcc cmake 2.1.3 安装编译需要的cmake工具 apt-get install cmake 2.1.4 安装必要的依赖库 apt-get install libssl-dev libsdl-dev libavcodec-dev libavutil-dev ffmpeg 2.1.5 构建和编译项目,我这里用6个核心来编译,速度还可以。默认的编译是不带webrtc功能的。 cd ZLMediaKit mkdir build cd build cmake .. make -j6 2.1.6 启动程序 cd ZLMediaKit/release/linux/Debug -- 通过-h可以了解启动参数,先用这个前台启动,后期调试完成后,再后台启动 ./MediaServer -h -- 以守护进程模式启动 ./MediaServer -d & 2.1.7 拿一个MP4视频文件,压流测试看看 ffmpeg -re -i /root/MTV02.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://0.0.0.0/live/mtv02 视频在局域网的播放地址: rtsp://10.150.150.101/live/mtv02
其实到了这步,后端就算构建完成了,后续如果无前端,理论上可以通过API进行操作。
– 备注,官方也给到一个Docker可以直接使用,本次未使用这个
docker run -id -p 1935:1935 -p 8080:80 -p 8554:554 -p 10000:10000 -p 10000:10000/udp panjjo/zlmediakit
2.2、手工方式配置wvp-GB28181-pro
根据项目描述,基于MediaServerUI进行修改,进MediaServerUI围观了一下,是基于nodejs。官方给到的部署技术指导页面为 https://github.com/648540858/wvp-GB28181-pro/wiki#%E4%BD%BF%E7%94%A8%E6%95%99%E7%A8%8B
-- 项目运行依赖redis、jdk1.8,打包依赖git、maven、nodejs、npm 2.2.1 安装nodejs mkdir -p /usr/bin/nodejs tar -xJvf node-v16.13.1-linux-x64.tar.xz -C /usr/bin/nodejs/ ~/.profile 增加环境PATH ~/.bashrc 增加环境PATH export PATH=/usr/bin/nodejs/node-v16.13.1-linux-x64/bin:$PATH node -v java -version -- 这次安装到的版本为nodejs-v16.13.1 -- 这次安装到的版本为openjdk-11.0.12 apt-get install openjdk-11-jre git 2.2.2 下载源码 git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git 2.2.3 编译静态页面 cd wvp-GB28181-pro/web_src/ npm --registry=https://registry.npm.taobao.org install npm run build -- 编译如果报错, 一般都是网络问题, 导致的依赖包下载失败 -- 编译完成后在src/main/resources下出现static目录
2.2.4-Pre maven需要java环境,前面我这里安装过了,现在去apache官网下载maven的二进制文件 -- 官方地址 https://maven.apache.org/download.cgi -- 下载地址 https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz -- 下载的版本注意随着时间的推移,会更新,注意用新的版本的 cd /root/src/ wget https://dlcdn.apache.org/maven/maven-3/3.8.4/binaries/apache-maven-3.8.4-bin.tar.gz tar -zxvf apache-maven-3.8.4-bin.tar.gz mkdir -p /usr/bin/maven/ mv /root/src/apache-maven-3.8.4 /usr/bin/maven ~/.bashrc 增加环境PATH ~/.profile 增加环境PATH export PATH=/usr/bin/maven/bin:/usr/bin/nodejs/node-v16.13.1-linux-x64/bin:$PATH 2.2.4 打包项目, 生成可执行jar cd wvp-GB28181-pro mvn package -- 编译如果报错, 一般都是网络问题, 导致的依赖包下载失败 -- 编译完成后在target目录下出现wvp-pro-x.x-xxxxxxxx.jar
-- 未完成,待续 https://github.com/648540858/wvp-GB28181-pro/wiki/%E7%BC%96%E8%AF%91%E8%BF%90%E8%A1%8C