编辑 | blame | 历史 | 原始文档

测试环境

服务器IP:51.92.65.72

远程连接:root yunwei@123

MySQL

centos7离线安装mysql

安装目录

/usr/local/mysql

配置文件

/etc/my.cnf

数据库、密码

zgyw    zgyw@202488

启动命令

service mysql start

nginx

centos7离线安装nginx

安装目录

/usr/local/nginx

配置文件位置

/usr/local/nginx/conf/nginx.conf

前端包位置

/usr/local/deploy/

java

安装目录

usr/local/deploy目录下

jdk17

将配置文件提取在jar包外的,如果要修改配置文件直接修改服务器上的:application.ymlapplication-prod.yml

如何上传文件

使用的远程工具为:MobaXterm

连接上服务器后,左上角有上传,

上传后的文件位于:/root/下。需要复制到/usr/local/deploy/下:mv /root/xxx /usr/local/deploy/

启动停止服务

启动:./startserver.sh

停止:查找端口(ps -ef | grep java),杀掉端口:kill -9 端口号

mongo

安装版本

mongo7

安装位置

/usr/local/mongodb7

配置文件位置

/usr/local/mongodb7/mongo.conf

启动

/usr/local/mongodb7/bin/mongod -f /usr/local/mongodb7/mongo.conf

用户名密码

root       yunwei@2024

目标数据库

zgyw

如何连接到数据库

  1. 任意地方输入:mongosh会进入test数据库
  2. 切换到admin数据库,use admin
  3. 认证:db.auth("root","yunwei@2024")
  4. 认证成功后,切换到zgyw数据库:use zgyw
  5. 查询集合:show collections
  6. 查询集合中的数据:db.集合名.find(),这是查全部
  7. 删除集合:db.集合名.drop(),测试环境可用
  8. 退出:exit

mongo工具

位于:/usr/local/mongodb7/mongo-tools/bin

redis

centos7离线安装redis

安装版本

redis6

安装位置

/usr/local/redis-6.2.14

配置文件位置

/usr/local/redis-6.2.14/redis.conf

用户名密码

目标数据库

1

如何连接redis

  1. /usr/local/redis-6.2.14/src目录下有个:redis-cli的脚本
  2. 在该目录下./redis-cli即可运行
  3. 切换数据库:select 1
  4. 查看所有key:keys *
  5. 退出:exit

优云平台

用户名、密码

yunwei     Yesc@123

运维系统jar包启动脚本:

#!/bin/bash  
  
# Jar包名称(不包括.jar后缀)  
JAR_NAME="zgyw"  
# Jar包路径  
JAR_PATH="/usr/local/deploy/ycl-server.jar"  
# Java命令路径(通常设置为java,除非你知道你的java命令在特定路径)  
JAVA_CMD="java -Dspring.profiles.active=prod -Dspring.config.location=/usr/local/deploy/application.yml,/usr/local/deploy/application-prod.yml"  
  
# 使用ps和grep列出所有与SEARCH_STRING相关的进程  
echo "找到以下java进程:"  
ps -ef | grep "java"  
  
# 提示用户输入要杀死的进程的PID  
read -p "请输入要杀死的进程号, 或输入“q”结束脚本: " PID  
  
# 输入q,退出脚本执行
if [ "$PID" = "q" ]; then  
    echo "Quitting..."  
    exit 0  
fi  

# 如果用户输入-1,则不需要杀死进程,直接启动  
if [ "$PID" = "q" ]; then  
    # 启动Jar包  
	echo "Starting $JAR_NAME..."  
	nohup $JAVA_CMD -jar $JAR_PATH 2>&1 &  
	echo "$JAR_NAME started with PID $!"  
fi  
  
# 检查输入的PID是否为数字  
if ! [[ "$PID" =~ ^[0-9]+$ ]]; then  
    echo "请输入正确的数字进程号. 输入“q”可结束脚本."  
    exit 1  
fi  
  
# 检查该PID是否存在  
if ! kill -0 "$PID" 2>/dev/null; then  
    echo "PID $PID does not exist."  
    exit 1  
fi  
  
# 杀死进程  
kill -SIGTERM "$PID"  
  
# 可选:等待几秒钟看进程是否退出  
sleep 2  
  
# 启动Jar包  
echo "Starting $JAR_NAME..."  
nohup $JAVA_CMD -jar $JAR_PATH 2>&1 &  
echo "$JAR_NAME started with PID $!"  

只需将jar包上传至服务器,此服务器上传默认在/root/下,上传到root下后,直接执行此脚本即可。

如更换服务器,请在服务器上:vi xxx.sh,复制进去后,需要设置为可运行脚本:chmod a+x xxx.sh

工单取视频流一帧图片

实现:使用gb28181协议对接大华平台,对接成功后大华会推送国标级联目录(国标设备),根据国标设备以及其中的通道即可使用点播获取到某个摄像头的视频流,拿到视频流就可以取一帧得到图片。

使用的开源项目:

  1. wvp-pro,wvp-pro是实现了gb281协议的一套开源框架,基于springboot+vue实现。
  2. ZLmediaKit,ZLmediaKit是一个拉流取流的开源矿建,基于c++实现。

二者相互配合,wvp-pro通过gb281得到拉流需要的数据(参数),然后通过其点播接口将流推送至ZLmediaKit转换成各种协议的视频地址(rtsp、mp4等等等等)。我们可以在自己的程序中调用wvp-pro的点播接口就能得到zlmediakit返回的视频地址了,也就能拿到一帧图片。

部署zlmediakit

当前部署位置:/usr/zlm/

因为是内网环境,所以部署会比其官方文档的操作要复杂一些。

  1. 第一步,安装openssl、gcc、gcc-c++、cmake包,这是zlm必要的环境。(openssl version 查看是否安装)如果你已经离线安装了redis、nginx,那么这两个包大概率已经安装了。
  2. 在一台公网服务器上,去克隆zlm项目,默认像阿里云、腾讯云的云服务器都自带git。代码下载完成后,执行其文档的命令,切记不能漏这个命令:git submodule update --init
#国内用户推荐从同步镜像网站gitee下载 
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
#千万不要忘记执行这句命令
git submodule update --init
  1. 执行完命令后,压缩zlm项目,上传到内网服务器解压。

image-20240830150653130

  1. 运行

image-20240830150901459

  1. 杀死zlm进程:ps -ef | grep MediaServer,然后kill
  2. 配置文件,默认http、https端口为80、443和nginx冲突,所以要改端口。配置文件也在ZLmediaKit/release/linux/Debug/conf.ini中。注意,这里只需要改端口能启动就行,后续wvp-pro会自动配置该文件

部署wvp-pro

当前部署位置:/usr/local/deploy/wvp/

  1. 修改配置文件:主要要修改关于gb284、zlm的:

image-20240830155843669

这些都可以自定义,但是这些也是需要大华平台添加的信息,id既做编号也做用户名。

image-20240830160353086

注意:id必须和zlm配置文件中的mediaServerId(属性名好像叫这个)一致。secret也必须一致(对应zlm中的通用配置中的secret)

因为wvp是sprngboot的所以打包:先打前端会打包到jar包静态文件中,再打jar包即可

wvp是需要数据库、redis的。

wvp部署好之后,联系大华平台的人,在大华sip国标平台添加我们wvp的sip信息,添加之后,大华会推送到国标目录到wvp平台(国标设备菜单)。只有一条数据,点击右侧操作按钮:通道,就能看到所有设备,其中通道编号就是国标码。

根据这一个国标设备的设备编号+一机一档设备的国标码,我们的系统就能调用wvp点播接口拿到视频地址,然后取帧保存为图片。