【流媒体视频监控平台开发wvp-GB28181-pro】

2023-05-16

wvp-GB28181-pro学习心得

  • wvp与GB28181介绍
    • 1.流媒体服务器视频协议介绍
    • 2.市面上的流媒体服务器
    • 3.wvp-GB28181-pro框架需要学习的框架和工具
    • 4.工具准备
    • 项目整合和配置

wvp与GB28181介绍

学习原因:需要开发一款视频监控集中平台,兼容海康、大华等视频厂家NVR和摄像头,共几百套设备,但是不需要每天实时监控,基本上每个NVR和摄像头每天观看1次左右,同时可以控制云台和回放,需要兼容大部分浏览器,可节约服务器资源。
海康、大华WEB控件开发问题很多,谷歌不能装插件,型号有些不兼容,插件卡死,视频预览回放无进度条,十分不方便。(主要是客户不太满意,又不多给点钱买服务器)

1.原有视频监控,基于海康、大华web控件和SDK
在这里插入图片描述
2.开源wvp-GB28181-pro
gitee仓库
gitee地址:https://gitee.com/pan648540858/wvp-GB28181-pro.git
B站大佬北小菜:https://space.bilibili.com/487906612

ZLMediaKit简单介绍
在这里插入图片描述

视频监控平台工作流程

  1. 登陆
  2. 点击对应监控通道
  3. 访问ZLMediaKit,进行拉流推流
  4. 无人访问时ZLMediaKit断开拉流推流
  5. 心跳检测,检测SIP信令服务是否可用

1.流媒体服务器视频协议介绍

  1. RTSP 自行百度
  2. RTMP 自行百度
  3. WEBRTC 自行百度
  4. FLV 自行百度
  5. HLS 自行百度
  6. GB28181 自行百度
  7. SIP 自行百度
  8. ONVIF 自行百度
  9. h264 自行百度
  10. h265 自行百度

2.市面上的流媒体服务器

青柿:收费,可以在浏览器播放
LiveNVR:收费,可以在浏览器播放
ZLMediaKit:免费,针对安防GB28181,无人观看可以自行断流,需要额外开发web服务器
SRS:免费,主要针对互联网
webrtc-streamer:免费,主要针对互联网
其他就不多做介绍

3.wvp-GB28181-pro框架需要学习的框架和工具

3.1 其他工具
VLC:桌面播放器,可以播放rtsp
FFmpeg:强大的编解码器,自带播放器,学习其基本的编解码命令运用
mediaInfo:媒体文件格式解析
wireshark抓包工具

3.2 wvp-GB28181-pro框架
springBoot Java开发框架
mysql关系数据库
redis非关系数据库
ZLMediaKit框架
SIP信令服务的使用

4.工具准备

1.Windows用户需要安装Ubuntu
桌面开始搜索微软商城
需要具备基本的linux开发命令基础
2.IDEA
Java开发工具
3.Redis
redis服务端
4.mysql数据库
Navicat连接客户端
5.ZLMediaKit流媒体框架
Ubuntu访问

项目整合和配置

1.打开IDEA,通过git导入wvp-GB28181-pro项目
默认application.yml配置文件,需要将application-dev.yml的内容修改并复制到application.yml
application.yml文件内容

    # REDIS数据库配置
    redis:
      # [必须修改] Redis服务器IP, REDIS安装在本机的,使用127.0.0.1
      host: 127.0.0.1
      # [必须修改] 端口号
      port: 6379
      # [可选] 数据库 DB
      database: 1
      # [可选] 超时时间
      timeout: 10000
  # mysql数据源
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/wvp2?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&serverTimezone=PRC&useSSL=false&allowMultiQueries=true
    username: root
    password: root
    druid:
      initialSize: 10                       # 连接池初始化连接数
      maxActive: 200                        # 连接池最大连接数
      minIdle: 5                            # 连接池最小空闲连接数
      maxWait: 60000                        # 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。
      keepAlive: true                       # 连接池中的minIdle数量以内的连接,空闲时间超过minEvictableIdleTimeMillis,则会执行keepAlive操作。
      validationQuery: select 1             # 检测连接是否有效sql,要求是查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。
      testWhileIdle: true                   # 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。
      testOnBorrow: false                   # 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      testOnReturn: false                   # 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。
      poolPreparedStatements: false         # 是否開啟PSCache,並且指定每個連線上PSCache的大小
      timeBetweenEvictionRunsMillis: 60000  # 配置間隔多久才進行一次檢測,檢測需要關閉的空閒連線,單位是毫秒
      minEvictableIdleTimeMillis: 300000    # 配置一個連線在池中最小生存的時間,單位是毫秒
      filters: stat,slf4j             # 配置监控统计拦截的filters,监控统计用的filter:sta, 日志用的filter:log4j
      useGlobalDataSourceStat: true         # 合并多个DruidDataSource的监控数据
      # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
      connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=1000
#[可选] WVP监听的HTTP端口, 网页和接口调用都是这个端口
server:
  port: 18080
# 作为28181服务器的配置
sip:
  # [必须修改] 本机的IP
  ip: 192.168.1.3
  # [可选] 28181服务监听的端口
  port: 15060
  # 根据国标6.1.2中规定,domain宜采用ID统一编码的前十位编码。国标附录D中定义前8位为中心编码(由省级、市级、区级、基层编号组成,参照GB/T 2260-2007)
  # 后两位为行业编码,定义参照附录D.3
  # 3701020049标识山东济南历下区 信息行业接入
  # [可选]
  domain: 3402000000
  # [可选]
  id: 34020000002000000001
  # [可选] 默认设备认证密码,后续扩展使用设备单独密码, 移除密码将不进行校验
  password: 123456789

#zlm 默认服务器配置
media:
  id: your_server_id
  # [必须修改] zlm服务器的内网IP
  ip: 192.168.1.3
  # [必须修改] zlm服务器的http.port
  http-port: 8080
  # [可选] zlm服务器的hook.admin_params=secret
  secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc
  # 启用多端口模式, 多端口模式使用端口区分每路流,兼容性更好。 单端口使用流的ssrc区分, 点播超时建议使用多端口测试
  rtp:
    # [可选] 是否启用多端口模式, 开启后会在portRange范围内选择端口用于媒体流传输
    enable: true
    # [可选] 在此范围内选择端口用于媒体流传输, 必须提前在zlm上配置该属性,不然自动配置此属性可能不成功
    port-range: 30000,30500 # 端口范围
    # [可选] 国标级联在此范围内选择端口发送媒体流,
    send-port-range: 30000,30500 # 端口范围
  # 录像辅助服务, 部署此服务可以实现zlm录像的管理与下载, 0 表示不使用
  record-assist-port: 0
# [可选] 日志配置, 一般不需要改
logging:
  config: classpath:logback-spring-local.xml

2.项目启动
idea启动Java项目,打开redis,编译并打开ZLMediaKit的MediaServer,编译wvp-GB28181-pro的web_src模块打开MySQL服务;
3.摄像头配置

在这里插入图片描述

4.登陆界面
用户admin
密码admin
在这里插入图片描述
5.预览界面
在这里插入图片描述
6.云台控制
在这里插入图片描述
7.ZLMediaKit推流成功界面
在这里插入图片描述

注意事项
ZLMediaKit配置文件config.ini和 wvp-GB28181-pro的配置应该一致

media:
  id: your_server_id
  # [必须修改] zlm服务器的内网IP
  ip: 192.168.1.3
  # [必须修改] zlm服务器的http.port
  http-port: 8080
  # [可选] zlm服务器的hook.admin_params=secret
  secret: 035c73f7-bb6b-4889-a715-d9eb2d1925cc

后续准备进行现场并发测试和进行二次开发以适应客户的业务系统

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【流媒体视频监控平台开发wvp-GB28181-pro】 的相关文章

随机推荐

  • STM32小四轴超低成本方案开源项目

    先分享几个小四轴无人机项目 新唐M452飞控开源项目 xff0c 虽然完全开源但是还不够成熟 xff0c PID调节感觉还有些问题 助你轻松DIY四轴飞行器 新唐M452飞控套件评测 电路城 MWC 飞控 xff0c 采用arduino编程
  • Autoware 主要模块

    引言 本文参考Autoware wiki overview xff0c 主要描述了Autoware的整体框架和模块描述 xff0c 主要包括感知和规划两大部分 感知包括定位模块 xff0c 检测模块 xff0c 预测模块 定位模块使用3D
  • DWA算法原理

    DWA算法 局部路径规划简介 机器人在获得目的地信息后 xff0c 首先经过全局路径规划规划出一条大致可行的路线 xff0c 然后调用局部路径规划器根据这条路线及costmap的信息规划出机器人在局部时做出具体行动策略 xff0c ROS中
  • ROS与深度相机入门教程:(1)Ubuntu16.04 在ROS中驱动Intel D435i深度相机

    Intel在Github上开源了支持所有RealSense系列相机的SDK 包括了D400 SR300系列深度相机和T265双目跟踪相机 支持Linux Windows Mac OS以及Android 链接 https github com
  • CMakeLists生成和载入动态链接库

    CMakeLists生成和载入动态链接库 生成动态链接库 新建一个文件夹 xff0c 暂且命名为 makeDllLib 文件夹中放入三个文件 c和 h和 def 其中 def文件是非必须的 xff0c 但它有利于生成 lib文件和导出函数
  • 串口传输 波特率 延时时间的设置

    在进行串口传输的时候 xff0c 波特率太低接收不到 xff0c 波特率太高又丢包 首先 xff0c 传输的报文需要多少时间 起始位1 xff0c 停止位1 xff0c 数据位8 xff0c 则传输时间为 xff1a 1000 xff08
  • 阶段进度条

    public class PhaseProgressView extends View 节点连线宽度 private int mLineWidth 节点个数 private int mNodeNum 选中节点位置 private int m
  • 计算机网络实验——基于TCP协议的socket编程

    一 实验目的 1 实现一个能够在局域网中进行点对点聊天的实用程序 2 熟悉c 43 43 Java等高级编程语言网络编程的基本操作 3 基本了解对话框应用程序的编写过程 4 实现TCP套接字编程 二 实验内容 xff08 一 xff09 实
  • GPRMC 格式

    数据示例 GPRMC 081057 000 A 3117 2144 N 12133 2691 E 0 02 0 00 140521 D 68 在数据 GPRMC lt 1 gt lt 2 gt lt 3 gt lt 4 gt lt 5 gt
  • 音视频开发基础概念

    对一个初学者来说 xff0c 刚刚接触音视频的学习难免会遇到各种个样的术语 xff0c 一开始我也是云里雾里的 xff0c 到现在一点一点接触积累 xff0c 形成一个基本的认识 本文并没有什么高深和详细的知识点 xff0c 旨在记录一些音
  • 音频数据采集-AudioRecord

    一 AudioRecord 和 MediaRecorder Android 提供了两个 API 用于录音 xff0c AudioRecord 和 MediaRecorder AudioRecord 能够获取原始的 PCM 数据 xff0c
  • vector用法

    介绍 1 vector是表示可变大小数组的序列容器 2 就像数组一样 xff0c vector也采用的连续存储空间来存储元素 也就是意味着可以采用下标对vector的元素进行访问 xff0c 和数组一样高效 但是又不像数组 xff0c 它的
  • AAC 音频编码保存和解码播放

    一 编码器 MediaCodec MediaCodec 是 Android 提供的用于对音频进行编解码的类 xff0c 属于硬编解 MediaCodec 在编解码的过程中使用了一组缓冲区来处理数据 如下图所示 基本使用流程如下 xff1a
  • Camera 视频采集,H264 编码保存

    一 前言 上篇文章 AAC 音频编码保存和解码播放 讲述了通过 AudioRecord 录制音频数据 xff0c 并通过 AAC 编码保存为 AAC 文件 这里的 aac 既是一种编码方式 xff0c 也是一种容器 xff0c 因此可以直接
  • 基于Camera、AudioRecord 、MediaCodec 和 MediaMuxer 录制 MP4

    一 前言 在 AAC 音频编码保存和解码播放和Camera 视频采集 xff0c H264 编码保存 两篇文章中介绍了如何通过 AudioRecord 和 MediaCodec 录制 AAC 音频以及如何通过 Camera 和 MediaC
  • 基于 SurfaceView、AudioTrack、MediaCodec 和 MediaExtractor 解码 MP4 播放

    一 前言 上篇文章介绍了 基于Camera AudioRecord MediaCodec 和 MediaMuxer 录制 MP4 录制的过程是这样的 xff0c 那么相应的播放过程就是上述过程的逆过程 xff0c 本篇文章将介绍如何通过 M
  • 研发、运营必备实用工具网站

    目录 1 搜索引擎 2 PPT 3 图片操作 4 文件共享 5 招聘求职 6 程序员面试题库 7 办公 开发软件 8 高清图片 视频素材网站 9 项目开源 10 算法 11 在线工具宝典大全 12 音乐 13 神辅助工具 14 语音处理 1
  • 让人“眼前一亮、不明觉厉”的互联网技术PPT

    目录 1 互联网 1 1 智能 43 1 2 云计算 1 3 5G 2 大数据 2 1 用户画像 2 2 边缘计算 2 3 工业大数据 2 4 医疗大数据 2 5 数据平台 2 6 银行大数据 3 物联网 3 1 物联网产业 3 2 工业物
  • 基于FPGA的电梯控制系统设计

    在本项目中一共分为了五个模块 xff1a 时钟分频 按键消抖 状态控制 蜂鸣 译码显示及流水指示灯 其模块的作用分别是 xff1a 时钟分频 xff1a 将高频率系统时钟通过分频得到不同合适频率的时钟频率作为不同模块的输入时钟 clk xf
  • 【流媒体视频监控平台开发wvp-GB28181-pro】

    wvp GB28181 pro学习心得 wvp与GB28181介绍1 流媒体服务器视频协议介绍2 市面上的流媒体服务器3 wvp GB28181 pro框架需要学习的框架和工具4 工具准备项目整合和配置 wvp与GB28181介绍 学习原因