基于WVP-Pro+Docker Compose搭建 GB28181 视频监控平台
WVP简介
WVP(WEB VIDEO PLATFORM)是一个基于GB28181-2016标准实现的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台;
WVP-Pro 平台部署
docker compose部署
准备环境
操作系统:Ubuntu 20.04 或更高版本
Docker 版本:20.10 或更高
硬件要求:至少 2 核 CPU,4GB 内存,10GB 可用存储空间
步骤 1:更新系统安装docker
sudo apt update && sudo apt upgrade -y
sudo apt install docker-ce docker-compose -y
有关docker安装、源配置等请参考本人博客容器技术之Docker基础入门
步骤 2:拉取项目
git clone https://github.com/648540858/wvp-GB28181-pro.git

步骤 3:进入项目目录配置环境参数

如上对应IP地址、域、id等根据自己环境来设定即可;示例本人内网环境配置如下
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker# cat .env
MediaRtmp=10001
MediaRtsp=10002
MediaRtp=10003
WebHttp=8080
WebHttps=8081
Stream_IP=192.168.112.222
SDP_IP=192.168.112.222
SIP_ShowIP=192.168.112.222
SIP_Port=8160
SIP_Domain=3502000000
SIP_Id=35020000002000000001
SIP_Password=admin123
RecordSip=true
RecordPushLive=
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker#
步骤 4:修改docker-compose.yml文件
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker# pwd
/root/test/wvp-GB28181-pro/docker
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker# ls
build.sh docker-compose.yml docker-compose.yml.bak docker-upgrade.sh logs media mysql nginx push.sh README.md redis volumes wvp
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker# cat docker-compose.yml
version: '3'
services:
polaris-redis:
image: redis:latest # 使用官方Redis镜像
restart: unless-stopped
healthcheck:
test: [ "CMD", "redis-cli", "--raw", "incr", "ping" ]
interval: 15s
timeout: 5s
retries: 10
start_period: 10s
networks:
- media-net
# ports:
# - 6379:6379
volumes:
- ./redis/conf/redis.conf:/opt/polaris/redis/redis.conf
- ./volumes/redis/data/:/data
environment:
TZ: "Asia/Shanghai"
command: redis-server /opt/polaris/redis/redis.conf --appendonly yes
polaris-mysql:
image: mysql:8 # 使用官方MySQL 8镜像
restart: unless-stopped
healthcheck:
test: [ "CMD", "bash", "-c", "cat < /dev/null > /dev/tcp/127.0.0.1/3306" ]
interval: 15s
timeout: 5s
retries: 10
start_period: 10s
networks:
- media-net
environment:
MYSQL_DATABASE: wvp
MYSQL_ROOT_PASSWORD: root
MYSQL_USER: wvp_user
MYSQL_PASSWORD: wvp_password
TZ: Asia/Shanghai
# ports:
# - 3306:3306
volumes:
- ./mysql/conf:/etc/mysql/conf.d
- ./logs/mysql:/logs
- ./volumes/mysql/data:/var/lib/mysql
- ../数据库/2.7.4/初始化-mysql-2.7.4.sql:/docker-entrypoint-initdb.d/init.sql # 初始化SQL脚本目录
command: [
# '--default-authentication-plugin=mysql_native_password',
'--innodb-buffer-pool-size=80M',
'--character-set-server=utf8mb4',
'--collation-server=utf8mb4_general_ci',
'--default-time-zone=+8:00',
'--lower-case-table-names=1'
]
polaris-media:
image: zlmediakit/zlmediakit:master # 替换为官方镜像
restart: always
networks:
- media-net
ports:
#- "6080:80/tcp" # [播流]HTTP 安全考虑-非测试阶段需要注释掉,改为由nginx代理播流地址
#- "4443:443/tcp" # [播流]HTTPS 安全考虑-非测试阶段需要注释掉,改为由nginx代理播流地址
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/tcp" # [收流]RTMP
- "${MediaRtmp:-10935}:${MediaRtmp:-10935}/udp" # [收流]RTMP
#- "41935:41935/tcp" # [收流]RTMPS 无效
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/tcp" # [收流]RTSP
- "${MediaRtsp:-5540}:${MediaRtsp:-5540}/udp" # [收流]RTSP
#- "45540:45540/tcp" # [收流]RTSPS 无效
- "${MediaRtp:-10000}:${MediaRtp:-10000}/tcp" # [收流]RTP
- "${MediaRtp:-10000}:${MediaRtp:-10000}/udp" # [收流]RTP
- "80:80"
volumes:
- ./volumes/video:/opt/media/bin/www/record/
- ./logs/media:/opt/media/log/
- ./media/config.ini:/conf/config.ini
command: [
'MediaServer',
'-c', '/conf/config.ini',
'-l', '0'
]
polaris-wvp:
# 显式指定构建上下文和Dockerfile路径
build:
context: .. # 构建上下文的根路径
dockerfile: ./docker/wvp/Dockerfile # 相对于上下文路径的Dockerfile位置
restart: always
networks:
- media-net
ports:
- "18978:18978"
- "${SIP_Port:-8116}:${SIP_Port:-8116}/udp"
- "${SIP_Port:-8116}:${SIP_Port:-8116}/tcp"
depends_on:
- polaris-redis
- polaris-mysql
- polaris-media
volumes:
- ./wvp/config:/opt/wvp/config
- ./wvp/wvp/:/opt/ylcx/wvp/
- ./logs/wvp:/opt/wvp/logs/
environment:
TZ: "Asia/Shanghai"
# docker env
RUN_ENV: "docker"
# 流链接的IP
Stream_IP: ${Stream_IP}
# SDP里的IP
SDP_IP: ${SDP_IP}
# [可选] zlm服务器访问WVP所使用的IP, 默认使用127.0.0.1,zlm和wvp没有部署在同一台服务器时必须配置
ZLM_HOOK_HOST: polaris-wvp
ZLM_HOST: polaris-media
ZLM_SERCERT: su6TiedN2rVAmBbIDX0aa0QTiBJLBdcf
MediaHttp: ${WebHttp:-8080}
#MediaHttps: ${WebHttps:-8081}
MediaRtmp: ${MediaRtmp:-10935}
MediaRtsp: ${MediaRtsp:-5540}
MediaRtp: ${MediaRtp:-10000}
REDIS_HOST: polaris-redis
REDIS_PORT: 6379
DATABASE_HOST: polaris-mysql
DATABASE_PORT: 3306
DATABASE_USER: wvp_user
DATABASE_PASSWORD: wvp_password
SIP_ShowIP: ${SIP_ShowIP}
SIP_Port: ${SIP_Port:-8116}
SIP_Domain: ${SIP_Domain}
SIP_Id: ${SIP_Id}
SIP_Password: ${SIP_Password}
RecordSip: ${RecordSip}
RecordPushLive: ${RecordPushLive}
polaris-nginx:
# 显式指定构建上下文和Dockerfile路径
build:
context: .. # 构建上下文的根路径
dockerfile: ./docker/nginx/Dockerfile # 相对于上下文路径的Dockerfile位置
ports:
- "${WebHttp:-8080}:8080"
depends_on:
- polaris-wvp
volumes:
- ./nginx/templates/:/etc/nginx/templates
- ./logs/nginx:/var/log/nginx
environment:
# 流链接的IP
Stream_IP: ${Stream_IP}
networks:
- media-net
networks:
media-net:
driver: bridge
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker#

这里需要把wvp容器里的80端口暴露出来,否者会出现在线预览黑屏;
步骤 5:启动docker compose 拉起项目
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker# docker compose up -d
WARN[0000] /root/test/wvp-GB28181-pro/docker/docker-compose.yml: the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion
[+] Running 6/6
✔ Network docker_media-net Created 0.1s
✔ Container docker-polaris-mysql-1 Started 0.4s
✔ Container docker-polaris-redis-1 Started 0.5s
✔ Container docker-polaris-media-1 Started 0.7s
✔ Container docker-polaris-wvp-1 Started 0.9s
✔ Container docker-polaris-nginx-1 Started 1.2s
root@wvp-pro-server:~/test/wvp-GB28181-pro/docker#
第一次启动会下载镜像,构建镜像需要耐心等待;
验证:查看对应容器是否启动?

通过使用docker compose ps 命令来查看对应容器的状态。如果状态都是UP说明容器启动成功;
步骤 6:访问平台

在浏览器访问服务器地址和端口即可;这里的端口就是我们前边用.env文件中定义的WebHttp端口;默认账号密码是admin/admin

步骤 7:查看sip服务器相关信息

登录平台找到设备接入---国标设备---接入信息;这里显示的信息,摄像头必须填写对应内容和这里一样即可;
步骤 8:登录摄像头后台设置平台相关参数

以海康摄像头为例,在配置---网络---高级配置---平台接入,平台接入方式选28181,本段sip端口协议保持默认5060/udp即可,勾选启用填写对应sip服务器相关信息;SIP用户用户名,和SIP用户认证ID视频通道编码ID这三个通常配置一样即可,需要注意的是第11-13需配置132或131,其他可以自己编,通常按照地市州的编码来编即可;如下

查看注册状态

如果填写对应信息后注册刷新后注册状态在线,说明对应摄像头成功注册到平台;
步骤 9:在GB28181视频平台查看监控

验证:查看监控

能够在视频平台上正常预览摄像头,说明摄像头接入平台成功;
至此基于wvp容器化搭建GB28181视频监控平台就完成了;更多项目介绍功能使用请参考官方文档https://gitee.com/pan648540858/wvp-GB28181-pro

WVP(WEB VIDEO PLATFORM)是一个基于GB28181-2016标准实现的网络视频平台,负责实现核心信令与设备管理后台部分,支持NAT穿透,支持海康、大华、宇视等品牌的IPC、NVR、DVR接入。支持国标级联,支持rtsp/rtmp等视频流转发到国标平台,支持rtsp/rtmp等推流转发到国标平台;
浙公网安备 33010602011771号