准备工作 1. 加入微盘 登录企业微信,收到邀请进入微盘,微盘-共享-视频事业部-运维组,这里是部门运维组整理的所有工作相关文件,可随时上传、下载、更新文件,方便小伙伴们跨平台、跨设备的实时处理工作内容与文件。
2. 获取服务器远程信息 视频转码上云网关在河南的各个路公司处,将ssh服务端口映射到公网后方可ssh远程。
远程信息已保存在微盘中:视频事业部-运维-河南-网关-河南网关远程信息表.xlsx。这里推荐使用xshell
作为远程连接工具,可酌情保存一份远程配置文件在xshell上随时远程使用。
3. 获取运维的摄像机信息 网关上都安装了mysql数据库,登录网关配置中心可以找到对应的路公司网关,从网关配置中心导入摄像机信息表,再由网关的主控程序处理数据同步网关数据库。
已经导入的摄像机数据我们备份在了微盘,路径为:视频事业部-运维-河南-网关-河南高速公路公司-路段单位,另外还包含了路由信息和网卡信息。
路由信息:设置摄像机IP的网络段自定义指向一个网关路由,若不可抗因素导致路由信息丢失,则摄像机与转码上云网关链路断开,拉流取不到视频流。
网卡信息:记录了静态内网地址。若外网网络不通,可进入路公司内网后通过内网地址远程转码网关。
1. 主控程序 作用:为高速公路视频云联网平台提供对接服务,接受并处理在云平台上的标清下发推流请求和高清点播请求,将请求传递给转码程序处理
文件所在路径:/opt/WebConfig/mastercontrolserver
寻找运行路径:cd "$(pwdx $(pgrep -f 'java -jar') | awk '{print $2}')"&&ls
运行日志路径:/opt/WebConfig/mastercontrolserver/logs/mastercontrolserver/
内含三个日志等级:info、warn和error
2. 转码程序 作用:拉流、转码、推流
有的转码程序版本将标清和高清的转码工作分开,标清通过GPU专用转码卡转码,高清用CPU进行转码。
2.1. 标清转码 作用:调用GPU,为标清视频提供长推流服务
文件所在路径:/opt/runGWS
运行日志同上,做了100份日志文件轮询,当前运行日志的文件是GWS.log
寻找运行路径:cd "$(pwdx $(pgrep -f './GWS') | awk '{print $2}')"&&ls
2.2. 高清转码 作用:调用CPU,为高清视频提供点播推流服务
文件所在路径:/opt/runGWS_CPU
运行日志同上,做了100份日志文件轮询,当前运行日志的文件是GWS.log
3. 守护进程 主要任务是保证每台网关的三个程序正常运行:
主控程序 mastercontrolserver
转码程序 GWS
高清转码 HDCPU
为避免程序崩溃后转码停止服务,我们设置了三个守护进程来复启动转码服务,从而达到自动化运维的目的。分别是 guard_master.sh
,guard_hik.sh
和 guard_cpu.sh
查看进程:
1 2 3 4 5 6 7 8 ps -ef | grep -e 'guard' -e 'java -jar' -e './GWS' | grep -v grep root@hn-zhongyuan-suixian-spsygw-000001:~ root 2929 2896 0 2023 pts/2 00:06:41 /bin/sh ./guard_hik.sh root 3105 3081 0 2023 pts/3 01:37:56 /bin/sh ./guard_master.sh root 25108 25068 0 2023 pts/1 00:06:36 /bin/sh ./guard_cpu.sh root 31805 3105 1 12:50 pts/3 00:00:56 java -jar mastercontrolserver-0.0.1.jar --spring.config.location=./application.properties root 31878 2929 99 12:50 pts/2 01:46:01 ./GWS -a 2 -c 0 -p 0 -nl -pl -hbst 1800
4. Tmux终端复用工具 守护进程最好使用tmux打开窗口复用终端运行
查看已创建tmux窗口名称:
1 2 3 4 5 tmux ls root@hn-zhongyuan-suixian-spsygw-000001:~ GWS: 1 windows (created Fri Oct 20 08:05:22 2023) [205x35] HDCPU: 1 windows (created Mon Oct 23 03:40:56 2023) [142x43] MASTER: 1 windows (created Fri Oct 20 08:06:53 2023) [205x35]
创建窗口,执行后自动进入复用终端
如:tmux new -s MASTER
进入终端后运行守护进程
1 2 cd /opt/WebConfig/mastercontrolserver ./guard_master.sh
退出窗口:第一步按下 ctrl + b
第二步 按下 d
(注意是小写)
进入已创建窗口:tmux attach -t MASTER
,或 tmux a -t MASTER
创建窗口并进入 tmux new -s GWS
1 2 cd /opt/runGWS ./guard_hik.sh
进入复用窗口 tmux a -t HDCPU
重启主控和GWS,等待出现GWS可在平台下发推流
1 2 3 4 5 6 7 {cd "$(pwdx$(pgrep -f './GWS') | awk '{print $2 }')" pkill -ef 'java -jar' && pkill -ef './GWS' pkill -ef 'java -jar' && pkill -ef './GWS' ps -ef | grep -e 'java -jar' -e './GWS' | grep -v greptail -f GWS.log }
5. 其他 5.5 开机自启设置(非常重要) 开机自启脚本写在 /etc/rc.local
和 /opt/start_env.sh
,由 /etc/rc.local
运行 /opt/start_env.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 root@ubuntu_yudeng:/opt sudo timedatectl set-timezone 'Asia/Shanghai' ifconfig enp7s0 44.129.35.100/24cd /home/GWS-deploy-hik/package/install/Hik/ko sh load_ko.shcd /opt/runGWSrm -f GWS.log * error.log nohup.outchmod 777 guard_hik.sh ./guard_hik.sh &cd /opt/runGWS_CPUrm -f GWS.log * error.log nohup.outchmod 777 guard_cpu.sh ./guard_cpu.sh &cd /opt/runGWS_CPU_CIFrm -f GWS.log * error.log nohup.outchmod 777 guard_cpu_cif.sh ./guard_cpu_cif.sh &cd /opt/WebConfig/mastercontrolserverrm -rf *.log mastercontrolserver-0.0.1.out logs/chmod 777 guard_master.sh ./guard_master.sh &cd /opt/exit 0
5.6 定时任务可选设置 查看已设置定时任务:
编辑定时任务:
1 2 3 4 5 6 7 8 9 50 3 * * * "pkill -f 'java -jar' && pkill -f './GWS'" 0 1 * * * truncate -s 0 /opt/runGWS_CPU_CIF/error.log 0 0 */2 * * cd /opt/check_脚本 && sh check_memory.sh
5.7 批量工具使用 小工具:批量ping IP、批量测试拉流地址
微盘下的 tool/ping.tar.gz
和 test_url.tar.gz
,建议解压到 /opt
下
批量ping的使用
编辑待测IP写入 ip_hosts
,运行 ./ping_duplicate.sh
,生成 ping_error.log
和 ping_ok.log
test_url
的使用
使用前安装 ffmpeg
1 sudo apt-get install ffmpeg -y
编辑待测地址写入 rtsp_urls.txt
,后台运行 ./test_resolutions.sh &
,输出结果在 output.txt
,tail -100f output.txt
滚动查看测试结果
1 2 3 4 root@hunan-changde-spsygw-005002:/opt/test_url Resolution for rtsp://43.0.107.58:554/mgc/realplay/43.0.107.58:655/dac/realplay/97cb725c3e344c75874fd4455275138e/SUB/TCP?streamform=rtp&standard=rtsp:704x576, Codec: H264 Resolution for rtsp://43.0.107.58:554/mgc/realplay/43.0.107.58:655/dac/realplay/2d2eebf0cd764841b783e6f26f0444cd/SUB/TCP?streamform=rtp&standard=rtsp:704x576, Codec: hevc Failed to get resolution and codec for rtsp://43.0.107.58:554/mgc/realplay/43.0.107.58:655/dac/realplay/b35b6aa517384aaebc35cca5679e415d/SUB/TCP?streamform=rtp&standard=rtsp
GWS.log查看
某一路推流成功
1 [2024-04-17 14:33:53.392][INFO]***Push frame success,cam_id = rtsp://43.4.5.2:50554/live/018d5920-5f29-744a-a307-10b4055b0bbc,url: rtmp://push.hngsspy.com:1935/live/018d5920-5f29-744a-a307-10b4055b0bbc?txSecret=d12e651ebdb28451d382d034c283f0d8&txTime=66200017. size: 3943, 0x27 0x64.[func:SendFrame -> RTMPusherEntity.cc:1524]
转码程序拉不到流
1 [2024-04-17 14:37:21.732][ERROR]QMCY_FFMPEG_DEMUX::QMCY_FFMPEG_Start Couldn't open input stream. cam_id = rtsp://43.4.5.2:50554/live/018d5920-5f29-7ee5-9352-afa29b1869b4[func:QMCY_FFMPEG_Start -> QMCY_FFMPEG_DEMUX.cpp:275]
可能推流失败
1 [2024-04-17 14:30:49.032][INFO]Reconnect the rtmp server, go to buffer, cam id = rtsp://43.4.5.2:50554/live/018d5920-5f29-757c-87f5-7b06163af922, url: rtmp://push.hngsspy.com:1935/live/018d5920-5f29-757c-87f5-7b06163af922?txSecret=a44d5105a3002725d8a7b931b41eb077&txTime=6620BD6F.[func:run -> RTMPusherEntity.cc:1742]
查看推流个数
grep "PushCount" GWS.log
或 tail -300f GWS.log | grep "PushCount"
1 2 root@hunan-changde-spsygw-005002:/opt/GWS2.5.3.1 [2024-04-17 14:36:53.767][WARN]
StreamListSize:下发推流指令的路数 HeartCount:正在点播的高清路数 AccessCount:当前拉流路数 TransCount:当前转码路数 PushCount:当前推流路数