Web端接入视频设备(NVR/IPC)

news2024/11/19 8:41:47

概述

本文主要介绍视频监控设备,视频监控设备接入,常用的开源流媒体及接入过程中的一些问题。

第一章 视频监控设备

目前常见的视频监控设备主要有NVR和IPC,以海康为例。

1.1 视频监控设备介绍

IPC即IP Camera,可以接入网络的摄像头,如下图。
IPC系统设置

NVR即Network Video Recorder,网络视频录像机,可以进行视频流存储和转发,管理多个IPC,如下图,以海康为例,通道管理可以查看各路IPC视频设备。
NVR系统设置

NVR通道管理

1.2 接入方式

视频监控设备接入普遍使用GB28181或RTSP协议介绍,在接入的过程中本人发现,由于云平台发展,GB接入有很多限制,例如海康通常会上一套IVMS和萤石云,萤石云接入可以让用户在手机端查看视频,但是会导致不能使用GB接入,所以我后来都优先使用RTSP协议接入,RTSP整体还是很适合监控视频接入。如下图,是客户现场的一个NVR配置,平台接入使用的萤石云:
平台接入
RTSP基本主流的监控设备都支持,默认554端口,RTSP支持推拉流双向模式,低延时,很适合监控视频,可以使用VLC播放器播放,不过在浏览器端不能直接播放,需要使用ffmpeg转一下,最终使用RTMP或HLS等形式在浏览器端直播,下面会逐个介绍。
RTSP协议

第二章 视频设备接入

视频设备接入有以下几种方式:

  • 使用视频设备SDK解码接入,官方有较详细的资料,比较麻烦;
  • 搭建流媒体服务,使用GB、RTSP等协议接入,流媒体服务开源的比较多,接入较简单,不过也有很多坑要踩一踩。
    下面介绍几种开源流媒体及接入方式。

2.1 SRS

SRS开源地址:SRS开源地址
GB28181分支:已经合并到srs5.0
srs的目标是打造一个好的流媒体服务,而不是接入,srs5.0后来没用过,笔者使用过srs-gb28181(合并之前),gb支持维护并不是很好,接入后有很多问题,例如NVR接入,一段时间后流会掉,需要重启或者手动注销会话后才能再次推流,推流或断开不能回调等。
关于国标的一些问题以及接入方式可参考:SRS国标接入说明

2.2 wvp-GB28181-pro

wvp开源地址:wvp开源地址
wvp需要结合ZLMediaKit流媒体服务,是一个开箱即用的28181协议视频平台,使用Java和Vue开发,包含设备管理、录像、视频广场等功能,代码前后端均开源,开发、部署文档完善,很适合监控设备接入和流媒体前端开发学习。

2.3 EasyDarwin

EasyDarwin是一个纯粹的RTSP流媒体服务,基于golang开发,部署简单,不依赖其他流媒体服务,结合ffmpeg可以实现HLS直播,配合开源的EasyPlayer实现Web端直播,是笔者目前主要使用的流媒体服务。
EasyDarwin开源地址:EasyDarwin开源地址
EasyPlayer Demo开源地址:EasyPlayer Demo开源地址
具体如何部署,参考EasyDwrwin地址即可,接下来说几个存在的问题以及解决方式(有些是临时解决方式)。

  1. 生成ts文件过多的问题
    EasyDarwin运行一段时间会生成大量的ts切片,ts切片生成配置并没放出来,源码写死。
    笔者目前临时解决方案:将下面脚本定时执行,每天凌晨清理一次,并重启EasyDarwin,则会重新生成在当天日期的文件夹,后续从源码改造,前端播放需要根据当前日期生成播放路径:http://IP:10008/record/{路径名称}/20230105/out.m3u8。
# 本地存储保存路径
root_dir=/var/Streaming
file_name=$(date +%Y%m%d)
current_dir=`pwd`
easydarwin_dir=/opt/EasyDarwin
# EasyDarwin重启后会以当天日期命名重新生成文件夹
systemctl restart EasyDarwin_Service.service
for i in $root_dir/*
    do
    if test -d $i
    then
    	# 由于我只需要直播,不需要回放,直接清理掉昨天的,需要保存的话挪到另一个文件夹即可
        cd $i && rm -rf `ls | grep -v "$file_name"`
        echo "$(date "+%Y-%m-%d %H:%M:%S") clean..." >> $current_dir/clean.log
    fi
done
# 每天凌晨执行
# 0 0 * * * /opt/EasyDarwin/clean_ts.sh
  1. easyplayer.js播放问题
    easyplayer算是一个基于videojs的HLS播放器,对应的播放地址:http://IP:10008/record/{路径名称}/20230105/out.m3u8。
    使用官方demo的时候发现h265播放黑屏,不过在官方的演示地址和VLC是可以播放的,官方演示地址。
    经测试,发现依赖文件EasyPlayer-element.min.js不同,把官方的依赖下载下来替换了demo中的依赖,按照说明部署即可,依赖下载地址。
  2. 要改进的问题
    EasyDarwin添加rtsp通道地址很麻烦,需要一个一个加,如一个NVR,用户名密码是不变的,但是我们需要每个都拼接一次地址:rtsp://账号:密码@ip/Streaming/Channel/102,完全可以改成只添加一次NVR地址、用户、密码,然后再统一添加需要监控的通道。

2.4 m7s

m7s(Monibuca ),按作者的定义,是一个开源的Go语言实现的流媒体服务器开发框架,下图仓库分布就能看出来,二次开发接口很强,而且开源已经支持主流的协议。可以到官网下载直接安装,也可以参考文档编译运行,二次开发,后面要重点研究一下。
官网地址:m7s官网地址
开源地址:m7s开源地址
仓库

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/149087.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

06-GC垃圾收集器有那些?

如图展示了HotSpot虚拟机中7种不同的垃圾收集, 连线代表两者可搭配使用 1.Serial 垃圾收集器(单线程、复制算法) Serial(英文连续)是最基本垃圾收集器,使用复制算法,曾经是JDK1.3.1 之前新生代唯一的垃圾…

【基础】Flink -- DataStream API

Flink -- DataStream API执行环境 Execution Environment创建执行环境设置执行模式触发程序执行源算子 Source从集合中读取数据从文件读取数据从 Socket 读取数据自定义数据源转换算子 Transformation基本转换算子映射 map过滤 filter扁平映射 flatMap聚合算子 Aggregation按键…

WPS配置mathtype

笔者电脑软件版本:WPS Office mathtype_7.4.8.0 请注意WPS适配的mathtype版本。 下载地址 mathtype_7.4.8.0:https://wwl.lanzoum.com/iuJDz0guffuh wps.vba.exe:https://handong1201.lanzouw.com/iX5GZtn70pe(mathtype右侧选…

查找算法之线性查找

目录 线性查找 算法实现 算法实现 python C 复杂度分析 优点与缺点 线性查找 线性查找(Linear Search)是一种最基础的查找方法,其从数据结构的一端开始,依次访问每个元素,直到另一端后停止。 算法实现 线性查…

【凸优化】Gradient Descent and Newton Descent【梯度下降法和牛顿下降法】(含Python代码绘制等高线图)

文章目录Gradient Descent and Newton Descent一、下降法【Descent】二、梯度下降法【Gradient Descent】三、牛顿下降法【Newton Descent】四、示例Example五、ReferenceGradient Descent and Newton Descent 一、下降法【Descent】 首先介绍什么是下降法【Descent Methods】…

【Git】下载安装学习记录

【下载安装】 1.官网下载64位的安装包 2.双击安装,设置安装路径,一路next即可 使用学习指南:一、设置用户签名二、操作本地库的命令git initgit statusgit add 文件名git rm --cached 文件名git commit -m "注释" 文件名git refl…

在PyCharm中配置Anaconda环境

目录 1.创建项目 2.设置解释器 ​​​​​​ 3.常见问题 1.创建项目 2.设置解释器 3.常见问题 1.%matplotlib inline报错:Python关于%matplotlib inline 2.from d2l import torch as d2l报错: 报错原因,没有导入d2l这个包 如何导入呢&…

JDK8下载安装与配置环境变量(linux)

一、前言 基于Linux平台的MySQL安装文件有三个版本,分别是RPM软件、GenericBinaries软件包、源码包,具体介绍如下: ①RPM软件包是一种Linux平台下的安装文件,通过相关命令可以很方便地安装与卸载。该软件包分为两个:…

SVF Saber的实现

SVF Saber1.基本原理2.API类型定义3.Memory Leak Checker3.1.示例3.2.初始化3.3.程序切片3.4.路径约束求解3.5.报告错误4.总结5.参考文献Saber是一个静态漏洞检测器,最初集成到open64中,现已集成到SVF中,主要检测内存泄漏,DoubleF…

GAN的损失函数

1.GAN 在训练过程中,生成器和判别器的目标是相矛盾的,并且这种矛盾可以体现在判别器的判断准确性上。生成器的目标是生成尽量真实的数据,最好能够以假乱真、让判别器判断不出来,因此生成器的学习目标是让判别器上的判断准确性越来…

PCL点云处理之快速点特征直方图(FPFH)描述符(八十六)

PCL点云处理之快速点特征直方图(FPFH)描述符(八十六) 前言一、快速点特征直方图理论二、FPFH和PFH的区别二、实验过程1.代码2输入法线的NAN值检查用 OpenMP 加速 FPFH前言 对于具有 n 个点的给定点云 P,点特征直方图(见点特征直方图(PFH)描述符)的理论计算复杂度为 O (nk…

VueRouter路由的使用(上)

文章目录VueRouter路由的使用p21路由的原理_hash改变historyP22 认识vue-router路由的基本使用流程默认路径router-link路由懒加载路由的其他属性动态路由的基本匹配NotFound路由嵌套编程式导航VueRouter路由的使用 p21 路由的原理_hash改变 <!DOCTYPE html> <html …

JavaScript 运算符

文章目录JavaScript 运算符JavaScript 算术运算符JavaScript 赋值运算符用于字符串的 运算符对字符串和数字进行加法运算JavaScript 运算符 运算符 用于赋值。 运算符 用于加值。 运算符 用于给 JavaScript 变量赋值。 算术运算符 用于把值加起来。 实例 指定变量值&am…

Java基础学习笔记(十)—— 异常

异常1 异常概述2 异常处理方式2.1 JVM默认处理异常的方式2.2 throws方式处理异常2.3 throw抛出异常2.4 try-catch方式处理异常2.5 Throwable成员方法2.6 异常的练习3 自定义异常1 异常概述 异常&#xff1a;就是程序出现了不正常的情况。程序在执行的过程中&#xff0c;出现的…

Vivado综合设置之-gated_clock_conversion

本文验证-gated_clock_conversion设置为on或off时&#xff0c;给Schematic带来的差异。 -gated_clock_conversion设置为on时&#xff0c;用于移除门控时钟&#xff0c;门控时钟是由门电路而非专用时钟模块&#xff08;例如MMCM或PLL&#xff09;生成的时钟。 门控时钟会对设计…

Java-集合(3)

Vector集合类 1.Vector底层保存数据的也是一个对象数组&#xff1a;protected Object[] elementDate; 2.Vector是线程同步的&#xff0c;也就是线程安全Vactor的操作方法都带有synchronized修饰。以此可以进行安全线程保障&#xff0c;所以在开发中如果确认只有一个线程操作集…

dubbo学习笔记3(小d课堂)

dubbo高级特性 启动依赖检查 我们现在直接来启动我们的消费者&#xff1a; 它会报错。 我们 再去直接运行我们的消费者就不会报错。 我们也可以不在代码中去配置&#xff1a; 实际工作中比较建议使用这种方式。 dubbo.reference.check是配置所有的reference里的service都是f…

C语言:大小端

大小端 对于整型来说&#xff0c;内存中存放的是补码&#xff0c;补码是按大小端模式进行存储&#xff1a; 大端存储数据低位存在内存高地址&#xff0c;高位存在内存低地址小端存储数据低位存在内存低地址&#xff0c;高位存在内存高地址 记忆方法 小小小&#xff1a;数据 小…

前端组件库自定义主题切换探索-01

探索原因背景 首先自然是项目有需求&#xff0c;这是必须去做的原因 其次&#xff0c;是我们项目没有直接使用市面上现成的基于element-ui或者ant-design的第三方UI框架&#xff0c;比如avue&#xff0c;而是有着自己的UI组件库 第三&#xff0c;我们的组件库基于ant-design-v…

Win10下干净卸载VMware15.5

一、说明 虚拟机属于服务软件&#xff0c;在Windows10下卸载实属不易。下面请看我所总结的卸载文档。 二、如何彻底卸载VMware虚拟机 需要删除的部分很多&#xff0c;包括&#xff1a; 三、删除步骤一&#xff1a;需要禁用VM虚拟机服务 首先&#xff0c;因为VM的软件属于底层…