视频方向的研究 update at 2021-12-20

一、需求描述,调研分析:

搭建一个视频汇聚转发平台,实现将多个国标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

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注