WEB VIDEO PLATFORM es una plataforma de video en red lista para usar basada en el estándar GB28181- 2016. Es responsable de implementar la parte principal de señalización y administración de dispositivos, admite la penetración de NAT y admite IPC de marcas como Hikvision, Dahua y Uniview. , acceso NVR. Admite la conexión en cascada estándar nacional y admite el reenvío de cámaras/transmisiones en vivo/transmisiones push en vivo sin funciones estándar nacionales a otras plataformas estándar nacionales.
Servicio de transmisión basado en @Xiachu ZLMediaKit https://github.com/ZLMediaKit/ZLMediaKit
player usando @dexter jessibuca https://github.com/langhuihui/jessibuca/tree/v3
Portada basada en @Kyle MediaServerUI https://gitee .com/kkkkk5G/MediaServerUI para su modificación.
Escenario de aplicación
Admite navegador para reproducir video de cámara sin complemento. Admite acceso a equipos estándar nacionales (cámaras, plataformas, NVR, etc.) y admite acceso a equipos estándar no nacionales (onvif, rtsp, rtmp, equipos de transmisión en vivo, etc.), aprovechando al máximo los antiguos. Admite cascada estándar nacional. Cascada multiplataforma. Vista previa de video entre redes. Admite la interconexión de plataformas de gatekeeper entre redes.
documento oficial
La documentación oficial es muy clara. Este artículo también se basa en documentación oficial.
- Sitio web oficial
https://doc.wvp-pro.cn/#/ - página de inicio del proyecto github
https://github.com/648540858/wvp-GB28181-pro
docker (pseudo máquina virtual)
Esta implementación e instalación está lista para configurarse en el contenedor docker. ¿Por qué configurarlo en docker? Aquí principalmente uso docker como máquina virtual. Esta configuración es conveniente para la migración y la implementación. Cuando se ejecuta en Linux, el rendimiento de Docker es mucho mejor que el de las máquinas virtuales.
Si no usa la ventana acoplable, puede omitir esta sección directamente.Mirando hacia atrás, es básicamente una operación ordinaria de ubuntu Linux.
instalación de la ventana acoplable
La instalación de Docker no es el tema central de este artículo. Consulte la documentación oficial de Docker:
https://docs.docker.com/engine/install/
Por ejemplo: me refiero a la instalación de ubuntu:
https://docs.docker.com/engine/install/ubuntu/
crear contenedor
Para el uso básico de la ventana acoplable, puede consultar:
"Notas de uso de la ventana acoplable"
https://blog.csdn.net/lxyoucan/article/details/121572097
espejo de descarga
Aquí elijo el sistema ubuntu, y en teoría las demás distribuciones son iguales.
docker pull ubuntu
Crear un CONTENEDOR
Ejecute el siguiente comando:
docker run --name wvp -it ubuntu bash
De esta forma creamos un contenedor llamado wvp y ejecutamos bash directamente.
Aquí hay algunas operaciones posibles.
Salir y entrar CONTENEDOR
- Tecla de acceso directo
ctrl -p
ctrl-q
para salir y dejar que CONTENEDOR se ejecute en segundo plano - La salida del comando apagará directamente el CONTENEDOR
进入 CONTENEDOR
docker adjuntar $NOMBRES
docker adjuntar $CONTENEDOR ID
Por ejemplo, debemos ingresar aquí:
docker attach wvp
Se puede consultar la versión del sistema.
cat /etc/*-release
Estoy aquíUbuntu 22.04.2 LTS
Utilidad de configuración sencilla
Crear un contenedor es equivalente a simplemente instalar un sistema. Primero hagamos una configuración simple y una instalación de la utilidad. Esta sección no es obligatoria. Depende de la preferencia personal.
desminimizar
Debido a que el ubuntu en docker es una versión simplificada, es para restaurar el modo normal.
Este paso puede no ser necesario, pero después de este paso, el contenedor estará más cerca de un ubuntu real. La desventaja es que el contenedor será más grande.
Establecer fuente nacional
Hay muchas fuentes nacionales, solo encuentra lo que te gusta.
Para conocer el método de configuración, consulte: https://blog.csdn.net/lxyoucan/article/details/121691910
Instalar software común
El siguiente software es el software necesario para mi uso de Linux, solo como referencia.
apt-get update
# 安装文本编辑器
apt install vim
# 安装zsh ,本人比较喜爱zsh替换bash
apt install zsh
# 网络工具
apt install curl wget
apt install unzip ranger
Preparación
Estoy aquí Ubuntu 22.04.2 LTS
, los pasos de operación básicamente se refieren al manual oficial.
https://doc.wvp-pro.cn/#/_content/introduction/compile
instalar dependencias
confiar | Versión | usar | necesidades del entorno de desarrollo | Necesidades del entorno de producción. |
---|---|---|---|---|
jdk | >=1.8 | Ejecutar y compilar código Java | Sí | Sí |
experto | >=3.3 | Administrar dependencias de código Java | No | No |
git | Descargar/Actualizar/Enviar código | No | No | |
nodos | Compilar y ejecutar archivos front-end | No | No | |
npm | Administrar dependencias de archivos front-end | No | No |
apt-get install -y openjdk-11-jre git maven nodejs npm
instalar mysql
Déjame decirte aquí, traté de instalar mysql, pero no se instaló correctamente en el contenedor. No le dediqué más tiempo.
Lo reemplacé con mariadb, que es compatible con mysql de todos modos.
Dirección oficial del tutorial:
https://mariadb.org/download/?t=repo-config&d=22.04+%22jammy%22&v=10.11&r_m=aliyun
Corté la parte clave.
Estos son los comandos que se ejecutarán al importar la clave del repositorio de MariaDB en un sistema Ubuntu:
sudo apt-get install apt-transport-https curl
sudo mkdir -p /etc/apt/keyrings
sudo curl -o /etc/apt/keyrings/mariadb-keyring.pgp 'https://mariadb.org/mariadb_release_signing_key.pgp'
EDITAR /etc/apt/sources.list.d/mariadb.sources
, dice lo siguiente:
# MariaDB 10.11 repository list - created 2023-06-19 10:07 UTC
# https://mariadb.org/download/
X-Repolib-Name: MariaDB
Types: deb
# deb.mariadb.org is a dynamic mirror if your preferred mirror goes offline. See https://mariadb.org/mirrorbits/ for details.
# URIs: https://deb.mariadb.org/10.11/ubuntu
URIs: https://mirrors.aliyun.com/mariadb/repo/10.11/ubuntu
Suites: jammy
Components: main main/debug
Signed-By: /etc/apt/keyrings/mariadb-keyring.pgp
Ahora puede instalar MariaDB 10.11 desde el repositorio de MariaDB con:
sudo apt-get update
sudo apt-get install mariadb-server
Iniciar mysql manualmente (MariaDB)
mysqld_safe --user=mysql &
El inicio es exitoso y la prueba posterior es la siguiente:
instalar redis
apt install redis
Debido a que lo estamos haciendo en un contenedor docker, systemctl start redis
no podemos iniciarlo correctamente.
Iniciar manualmente el servicio redis
/usr/bin/redis-server /etc/redis/redis.conf
Compilar ZLMediaKit
Consulte ZLMediaKitWIKI e intercepte los pasos clave:
# 国内用户推荐从同步镜像网站gitee下载
git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
cd ZLMediaKit
# 千万不要忘记执行这句命令
git submodule update --init
La versión gcc que viene con ubuntu es generalmente lo suficientemente nueva, puede instalar el compilador gcc de esta manera:
sudo apt-get install build-essential
ZLMediaKit usa cmake para compilar el proyecto, y el Makefile (o el proyecto Xcode/VS) solo se puede generar a través de cmake, por lo que cmake debe instalarse primero para completar los siguientes pasos.
Si tiene un sistema operativo basado en Debian (incluidos los usuarios basados en ubuntu), la versión de cmake que viene con él suele ser lo suficientemente nueva, puede instalar cmake así
sudo apt-get install cmake
El método de instalación de dependencias en el sistema Debian (incluido ubuntu):
Además de openssl, en realidad no se pueden instalar otros
sudo apt-get install libssl-dev
sudo apt-get install libsdl-dev
sudo apt-get install libavcodec-dev
sudo apt-get install libavutil-dev
sudo apt-get install ffmpeg
Compilar:
cd ZLMediaKit
mkdir build
cd build
cmake ..
make -j4
Comience bajo Linux:
cd ZLMediaKit/release/linux/Debug
#通过-h可以了解启动参数
./MediaServer -h
#以守护进程模式启动
./MediaServer -d &
Compilar WVP-PRO
Después de trabajar en él durante mucho tiempo, finalmente llegué al texto.
clon de gitee
git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
clonar de github
git clone https://github.com/648540858/wvp-GB28181-pro.git
Aquí cloné desde github.
Compilar la página de inicio
cd wvp-GB28181-pro/web_src/
npm --registry=https://registry.npmmirror.com install
npm run build
Si se informa un error durante la compilación, generalmente se trata de un problema de red, lo que provoca que no se pueda descargar el paquete dependiente.
Si no funciona, use una computadora que pueda compilar con éxito y compílelo.
No tengo éxito en la ventana acoplable aquí npm install
y no quiero perder el tiempo. Lo compilé y lo copié en mac.
PD: puedes usar la fuente de taobao así
npx nrm use taobao
generar jar ejecutable
cd wvp-GB28181-pro
mvn package
inicialización de la base de datos
Configure WVP-PRO
wvp admite múltiples bases de datos, incluidas Mysql, Postgresql, Jincang, etc. Puede elegir una de ellas para la configuración.
Inicializar la base de datos
Primero use crear base de datos, luego use sql/initialize.sql para inicializar la base de datos, si se actualizó desde una versión anterior, use upgrade sql para actualizar.
Configuración de la base de datos Mysql
El nombre de la base de datos toma wvp como ejemplo, y
el archivo de configuración de yml es el siguiente:
spring:
datasource:
type: com.zaxxer.hikari.HikariDataSource
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true&allowPublicKeyRetrieval=true
username: root
password: 12345678
mybatis:
configuration:
map-underscore-to-camel-case: true
Usaremos esto luego. Esto es para que todos lo vean y se incluirá en el archivo de configuración más adelante.
establecer contraseña raíz
Aquí tomamos el ajuste 12345678
como ejemplo.
Ingrese mysql en la línea de comando para ingresar la línea de comando de mysql.
Luego ejecuta el siguiente comando:
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '12345678';
Debido a que establecemos una contraseña, traeremos la contraseña la próxima vez que ingresemos a la línea de comando mysql
mysql -uroot -p12345678
crear base de datos
Primero ingrese la línea de comando de mysql:
mysql -uroot -p12345678
Luego ingrese el siguiente comando para crear el usuario.
CREATE DATABASE `wvp` CHARACTER SET UTF8;
use wvp;
set character_set_client=utf8;
set character_set_connection=utf8;
set character_set_database=utf8;
set character_set_results=utf8;
source /root/wvp-GB28181-pro/sql/初始化.sql;
El script creará la siguiente estructura de tabla.
MySQL [wvp]> show tables;
+----------------------------+
| Tables_in_wvp |
+----------------------------+
| wvp_device |
| wvp_device_alarm |
| wvp_device_channel |
| wvp_device_mobile_position |
| wvp_gb_stream |
| wvp_log |
| wvp_media_server |
| wvp_platform |
| wvp_platform_catalog |
| wvp_platform_gb_channel |
| wvp_platform_gb_stream |
| wvp_stream_proxy |
| wvp_stream_push |
| wvp_user |
| wvp_user_role |
+----------------------------+
15 rows in set (0.002 sec)
Modificar el archivo de configuración yml
Copiamos directamente el comando wvp-GB28181-pro/src/main/resources/application-dev.yml
de la
wvp-GB28181-pro/src/main/resources/application-local.yml
siguiente manera:
cd ~/wvp-GB28181-pro/src/main/resources
cp application-dev.yml application-local.yml
Luego podemos editar application-local.yml.
Edité el siguiente contenido aquí:
fuente de datos mysql
url: jdbc:mysql://127.0.0.1:3306/wvp?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
username: root
password: 12345678
Debido a que no establecimos una contraseña para redis
, comentamos directamente esta línea con #.
#password: face2020
Después de modificar el archivo de configuración, podemos ejecutar el proyecto con el siguiente comando para ver si hay algún error.
cd /root/wvp-GB28181-pro
mvn spring-boot:run
Otros lugares están básicamente de acuerdo con la configuración predeterminada del autor.
Configuración de ZLMediaKit
cd ZLMediaKit/release/linux/Debug
vim config.ini
La modificación aquí es principalmente el contenido correspondiente al yml anterior:
puerto http
Poner port=8091 en la configuración [http]
ID del servidor de medios
[general]
mediaServerId=FQ3TF8yT83wh5Wvz
Comienza el servicio
cd ZLMediaKit/release/linux/Debug
#以守护进程模式启动
./MediaServer -d &
correr
La configuración anterior se completa y también se menciona la operación. Tráigalo por separado y dígalo de nuevo. Porque la configuración suele ser una sola vez. La configuración ha terminado. Y correr tiene que hacerse a menudo.
Iniciar mysql manualmente (MariaDB)
mysqld_safe --user=mysql &
Iniciar manualmente el servicio redis
/usr/bin/redis-server /etc/redis/redis.conf
Iniciar ZLMediaKit
cd ZLMediaKit/release/linux/Debug
./MediaServer -d &
Iniciar WVP
Hay muchas formas de empezar, la mía es la de arranque directo. No empaquetado en un paquete de tarro.
cd /root/wvp-GB28181-pro
mvn spring-boot:run
Ventajas: Es conveniente modificar la configuración.
Contras: un poco más lento para comenzar. En teoría, no afecta al rendimiento.
Si le gustan otros métodos, puede consultar la documentación oficial:
https://doc.wvp-pro.cn/#/_content/introduction/config
El paquete jar se puede iniciar así:
java -jar wvp-pro-*.jar
Todo lo anterior se ha completado y no hay errores informados. Puede visitar IP:18080 a través de un navegador.
Problema restante
No está claro por qué la conexión redis siempre tendrá problemas después de que se reinicie el contenedor acoplable.
Los siguientes comandos se pueden ejecutar usando redis-cli. resolver el problema D.
FLUSHDB ASYNC
compartir mi configuración
https://download.csdn.net/download/lxyoucan/87933896
Resumir
El despliegue de este proyecto no es difícil. Pero es un poco complicado. La clave es que la documentación oficial no es exhaustiva, y algunos lugares se mencionan de un solo golpe. Será difícil para los estudiantes que no conocen Java.
referencia
- "wvp-GB28181-pro Compile e implemente el sistema ubuntu: instrucciones para principiantes"
https://blog.51cto.com/u_16085888/6218862