当前位置:网站首页>Technology sharing | wvp+zlmediakit realizes streaming playback of camera gb28181
Technology sharing | wvp+zlmediakit realizes streaming playback of camera gb28181
2022-06-24 23:56:00 【anyRTC】
Introduce
WEB VIDEO PLATFORM It's based on GB28181-2016 Standard out of the box network video platform , Responsible for the core signaling and equipment management background part , Support NAT through , Support Haikang 、 Dahua 、 Yushi and other brands IPC、NVR Access . Support national standard cascade , Support the camera without national standard function / Live streaming / Live streaming and forwarding to other national standard platforms .
Application scenarios
- Support browser to play camera video without plug-in .
- Support Cameras 、 platform 、NVR And other equipment access . Support national standard cascade .
- Support rtsp/rtmp Wait for the video stream to be forwarded to the national standard platform .
- Support rtsp/rtmp Wait for the streaming to be forwarded to the national standard platform .
Service deployment
ZLMediaKit Deploy
Download address : git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
## Prepare the environment
[[email protected] artc]# yum install -y epel-release
## gcc and yasm Need a higher version It's for small knitting gcc4.8.5 yasm1.2.0
[[email protected] artc]# yum -y install yasm gcc*
[[email protected] artc]# yum -y install openssl-devel SDL-devel
## Compilation and installation cmake 3.8.2
[[email protected]calhost ~]# cd /home/artc
[[email protected] artc]# wget https://cmake.org/files/v3.8/cmake-3.8.2.tar.gz
[[email protected] artc]# tar zxvf cmake-3.8.2.tar.gz
[[email protected] artc]# cd cmake-3.8.2
[[email protected] cmake-3.8.2]# ./bootstrap
[[email protected] cmake-3.8.2]# gmake
[[email protected] cmake-3.8.2]# gmake install
## The domestic warehouse is relatively fast
[[email protected] ~]# cd /usr/local/
[[email protected] local]# git clone --depth 1 https://gitee.com/xia-chu/ZLMediaKit
[[email protected] local]# cd ZLMediaKit
# Don't forget to carry out this command
[[email protected] ZLMediaKit]# git submodule update --init
## Compilation and installation
[[email protected] ZLMediaKit]# mkdir build
[[email protected] ZLMediaKit]# cmake .
[[email protected] ZLMediaKit]# make -j4
## ZLMediaKit Service catalog
[[email protected] ZLMediaKit]# cd release/linux/Debug
The configuration file
[[email protected] Debug]# vim config.ini
[general]
mediaServerId=12345678 ## Back and WVP-PRO docking
[hook]
admin_params=secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc ## Back and WVP-PRO docking
## Program started
[[email protected] Debug]# ./MediaServer ## The front desk starts
[[email protected] Debug]# ./MediaServer -d & ## Background start
## Soft connection
[[email protected] Debug]# ln -sf /home/ZLMediaKit/release/linux/Debug/MediaServer /usr/bin/
WVP-PRO Deploy
Project operation depends on redis、jdk1.8, Package dependency git、maven、nodejs、npm.
Redis Deploy
## download epel Warehouse
[[email protected] ~]# yum install epel-release -y
## download redis database
[[email protected] ~]# yum install redis -y
## start-up redis And set to turn on auto start
[[email protected] ~]# systemctl start redis
[[email protected] ~]# systemctl enable redis
## Set up redis Remote connection and password ( If they are all on the same machine Don't take this step )
[[email protected] ~]# vim /etc/redis.conf
notes #bind 127.0.0.1
modify protected-mode no
modify daemonize yes
modify requirepass 123456
## Turn off firewall or open 6379 port
[[email protected] ~]# systemctl stop firewalld // Turn off firewall
[[email protected] ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent // Open ports
[[email protected] ~]# firewall-cmd --reload // After opening the port Need to update
## restart redis
[[email protected] ~]# systemctl restart redis
MySQL Deploy
[[email protected] ~]# yum -y install mariadb mariadb-server
[[email protected] ~]# systemctl enable mariadb
[[email protected] ~]# systemctl start mariadb
[[email protected] ~]# mysql -uroot
mysql> set password = password('123456');
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; // Set up mysql Internet connection password
mysql> flush privileges;
JDK Deploy
[[email protected] ~]# tar zxvf jdk-8u121-linux-x64.tar.gz
[[email protected] ~]# mv jdk1.8.0_121/ /usr/local/jdk
[[email protected] ~]# vim /etc/profile
## Add... At the end
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
[[email protected] ~]# source /etc/profile
[[email protected] ~]# java -version
java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) 64-Bit Server VM (build 25.121-b13, mixed mode)
Maven Deploy
[[email protected] ~]# tar zxvf apache-maven-3.5.0-bin.tar.gz
[[email protected] ~]# mv apache-maven-3.5.0 /usr/local/maven
[[email protected] ~]# vim /etc/profile
## Add... At the end
export MAVEN_HOME=/usr/local/maven
export PATH=$MAVEN_HOME/bin:$PATH
[[email protected] ~]# source /etc/profile
[[email protected] ~]# mvn -version
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-04T03:39:06+08:00)
Maven home: /usr/local/maven
compile WVP-PRO
## Installation dependency
[[email protected] ~]# yum -y install git nodejs npm
## Download the source code
[[email protected] ~]# cd /usr/local
[[email protected] local]# git clone https://gitee.com/pan648540858/wvp-GB28181-pro.git
## Compile static pages
[[email protected] ~]# cd /usr/local/wvp-GB28181-pro/web_src/
[[email protected] web_src]# npm --registry=https://registry.npm.taobao.org install
[[email protected] web_src]# npm run build
## Packaging project , Generate executable jar
[[email protected] web_src]# cd ..
[[email protected] wvp-GB28181-pro]# mvn package
## When the compilation is complete target Appear under directory wvp-pro-x.x-xxxxxxxx.jar
## Import MySQL file
[[email protected] ~]# cd /usr/local/wvp-GB28181-pro/sql
[[email protected] sql]# mysql -uroot -p123456
MariaDB [(none)]> create database wvp;
MariaDB [(none)]> use wvp;
MariaDB [(none)]> source mysql.sql ## Byte errors may occur take mysql.sql Inside 255 Byte modification dot
## Configuration file modification
[[email protected] wvp-GB28181-pro]# mv src/main/resources/application-dev.yml target/application.yml
[[email protected] wvp-GB28181-pro]# vim target/application.yml
spring:
# [ Optional ] Upload file size limit
servlet:
multipart:
max-file-size: 10MB
max-request-size: 100MB
# REDIS Database configuration
redis:
# [ Must be modified ] Redis The server IP, REDIS Installed on the of this machine , Use 127.0.0.1
host: 127.0.0.1
# [ Must be modified ] Port number
port: 6379
# [ Optional ] database DB
database: 6
# [ Optional ] Access password , If your redis The server doesn't have a password , You don't need a password to connect
password:
# [ Optional ] Timeout time
timeout: 10000
# mysql data source
datasource:
type: com.alibaba.druid.pool.DruidDataSource
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
username: root
password: 123456
druid:
initialSize: 10 # Number of connection pool initialization connections
maxActive: 200 # Maximum number of connections in connection pool
minIdle: 5 # The minimum number of free connections in the connection pool
maxWait: 60000 # Maximum wait time when getting a connection , Unit millisecond . Configured with maxWait after , Fair lock is enabled by default , Concurrency efficiency will decrease , If necessary, it can be configured through useUnfairLock The attribute is true Use unfair locks .
keepAlive: true # Connect... In the pool minIdle No more connections , Idle time exceeds minEvictableIdleTimeMillis, Will perform keepAlive operation .
validationQuery: select 1 # Check whether the connection is valid sql, The requirement is a query statement , Commonly used select 'x'. If validationQuery by null,testOnBorrow、testOnReturn、testWhileIdle It doesn't work .
testWhileIdle: true # Recommended configuration is true, No performance impact , And ensure safety . Check when applying for connection , If the free time is greater than timeBetweenEvictionRunsMillis, perform validationQuery Check whether the connection is valid .
testOnBorrow: false # Execute on connection request validationQuery Check whether the connection is valid , This configuration will degrade performance .
testOnReturn: false # Execute... When returning the connection validationQuery Check whether the connection is valid , This configuration will degrade performance .
poolPreparedStatements: false # Whether to open PSCache, And specify each connection PSCache Size
timeBetweenEvictionRunsMillis: 60000 # How often is the configuration interval checked , Detect idle connections that need to be closed , It's in milliseconds
minEvictableIdleTimeMillis: 300000 # Configure the minimum lifetime of a connection in the pool , It's in milliseconds
filters: stat,wall,slf4j # Configure monitoring statistics interception filters, For monitoring statistics filter:sta, It's for the log filter:log4j, defense sql Injected filter:wall
useGlobalDataSourceStat: true # Merge multiple DruidDataSource Monitoring data
# adopt connectProperties Property to open mergeSql function ; slow SQL Record
connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000
#stat-view-servlet.url-pattern: /admin/druid/*
#[ Optional ] WVP Monitoring HTTP port , This port is used for web pages and interface calls
server:
port: 18080
# As 28181 Server configuration
sip:
# [ Must be modified ] Native IP
ip: 192.168.1.13
# [ Optional ] 28181 The port the service listens on
port: 5060
# According to the national standard 6.1.2 Specified in the ,domain It is advisable to use ID The first ten digits of unified coding . National standard appendix D Before definition in 8 Bit centered coding ( By the provincial level 、 Municipal level 、 District level 、 The basic level is composed of numbers , reference GB/T 2260-2007)
# The last two digits are industry codes , Refer to appendix for definitions D.3
# 3701020049 Logo: Lixia District, Jinan, Shandong Information industry access
# [ Optional ]
domain: 4401020049
# [ Optional ]
id: 44010200492000000001
# [ Optional ] Default device authentication password , Subsequent extensions use the device's separate password , Removing the password will not be verified
password: admin123
#zlm Default server configuration
media:
id: 12345678 ##ZLMediaKit Configured ID
# [ Must be modified ] zlm The intranet of the server IP
ip: 192.168.1.13
# [ Must be modified ] zlm Server's http.port
http-port: 80
# [ Optional ] zlm Server's hook.admin_params=secret
secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
# Enable multi port mode , Multiport mode uses ports to distinguish each flow , Better compatibility . Single port uses streaming ssrc distinguish , On demand timeout, it is recommended to use multi port test
rtp:
# [ Optional ] Whether to enable multi port mode , After opening, it will be in portRange Select the port within the range for media streaming
enable: true
# [ Optional ] Select ports within this range for media streaming , Must be in advance at zlm Configure this property on , Otherwise, automatic configuration of this property may not succeed
port-range: 30000,30500 # Port range
# [ Optional ] GB cascade selects ports within this range to send media streams ,
send-port-range: 30000,30500 # Port range
# Video assisted Services , Deploying this service can achieve zlm Video management and download , 0 No use
record-assist-port: 18081
# [ Optional ] Log configuration , Generally, there is no need to change
logging:
config: classpath:logback-spring-local.xml
# Version information , Don't need to modify
version:
version: "@[email protected]"
description: "@[email protected]"
artifact-id: "@[email protected]"
## start-up WVP
[[email protected] wvp-GB28181-pro]# cd target
[[email protected] target]# java -jar wvp-pro-2.3.1-06151618.jar
## Access management page
http://192.168.1.13:18080
Default user name :admin, password :admin
Click on the console --》 Media server configuration --》 Relevant information is enough
Self starting script
[[email protected] target]# cat wvp-pro.sh
#!/bin/sh
##
if [ -f /etc/init.d/functions ]; then
. /etc/init.d/functions
elif [ -f /etc/rc.d/init.d/functions ]; then
. /etc/rc.d/init.d/functions
else
echo -e "\aJnice: unable to locate functions lib. Cannot continue."
exit 0
fi
ulimit -n 65000
echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range
## jar File name
export JAVA_HOME=/usr/lib/jvm/java-1.8.0
export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
JAR_HOME=/usr/local/wvp-GB28181-pro/target
JAR_NAME=wvp-pro-2.3.1-06151618.jar
## Filter pid Process number
wvp_pro=`ps -ef|grep $JAR_NAME | grep -v grep | grep -v kill | awk '{print $2}'`
#---------------------------------------------------------------------------
# START
#---------------------------------------------------------------------------
Start()
{
if [ $tpid ]; then
echo -n "wvp_pro process [${prog}] already running"
echo_failure
echo
return 1
fi
if [ ! -f ${JAR_HOME}/${JAR_NAME} ]; then
echo -n "wvp_pro binary [${prog}] not found."
echo_failure
echo
return 1
fi
echo -n "starting service (wvp_pro): "
cd ${JAR_HOME}
nohup java -jar ${JAR_HOME}/${JAR_NAME} > /dev/null 2>&1 &
retval=$?
if [ ${retval} == 0 ]; then
echo_success
echo
else
echo_failure
echo
break
fi
sleep 1
return 0
}
#---------------------------------------------------------------------------
# STOP
#---------------------------------------------------------------------------
Stop()
{
echo -n "stopping service (wvp_pro): "
kill -9 $wvp_pro
echo
return 0
}
#---------------------------------------------------------------------------
# MAIN
#---------------------------------------------------------------------------
case "$1" in
start)
Start
;;
stop)
Stop
;;
restart)
Stop
sleep 3
Start
;;
*)
echo "please use : $0 {start|stop|restart}"
esac
exit
[[email protected] target]# crontab -l
*/1 * * * * sh /usr/local/wvp-GB28181-pro/target/wvp-pro.sh start >/dev/null 2>&1
边栏推荐
- canvas螺旋样式的动画js特效
- Morris traversal
- Scala IO case
- Daily calculation (vowel case conversion)
- 技术分享| WVP+ZLMediaKit实现摄像头GB28181推流播放
- U.S. House of Representatives: digital dollar will support the U.S. dollar as the global reserve currency
- How does VR panorama make money? Based on the objective analysis of the market from two aspects
- 7-9 treasure hunt route
- 浅析大型IM即时通讯系统开发难度
- 7-6 laying oil well pipeline
猜你喜欢
Tutorial details | how to edit and set the navigation function in the coolman system?
Collective例子
Record a Webflux application memory leak troubleshooting
Tiktok practice ~ project associated unicloud
5G dtu无线通信模块的电力应用
QT display RGB data
节奏快?压力大?VR全景客栈带你体验安逸生活
JPA学习2 - 核心注解、注解进行增删改查、List查询结果返回类型、一对多、多对一、多对多
svg线条动画背景js特效
Hibernate learning 2 - lazy loading (delayed loading), dynamic SQL parameters, caching
随机推荐
Window系统安装Nacos
7-2 construction of binary tree by post order + middle order sequence
Using ADC to control brushless motor source program STM32 library function
SAP PA certificate for no birds, which can be tested by new peers
磁带svg动画js特效
颜色渐变梯度颜色集合
技术分享| WVP+ZLMediaKit实现摄像头GB28181推流播放
Development status and prospect trend forecast report of humic acid sodium industry in the world and China from 2022 to 2028
7-6 laying oil well pipeline
单调栈以及单调栈的应用
Andersen Global借助巴勒斯坦成员公司加强中东平台
Analysis report on development trend and investment forecast of global and Chinese D-leucine industry from 2022 to 2028
年薪百万,7年测试经验:守在一个还算不错的赛道,慢慢积累,等风来
Analysis report on production and marketing demand and investment forecast of China's boron nitride industry from 2022 to 2028
ArcGIS加载免费在线历史影像作为底图(不需要插件)
Is there really something wrong with my behavior?
Today's sleep quality record 79 points
部门新来的00后真是卷王,工作没两年,跳槽到我们公司起薪18K都快接近我了
HMS core discovery Episode 13 live broadcast Preview - building the real world in mobile games
Current situation and development prospect forecast report of global and Chinese tetrahydrofurfuryl alcohol acetate industry from 2022 to 2028