设计一个监控摄像头物联网IOT(webRTC、音视频、文件存储)

前言:

设计一个完整的 监控摄像头物联网 IoT 平台 涉及 视频直播和点播、WebRTC 和 文件存储模块,可以分为以下几个主要部分:摄像头设备、服务端处理、Web 前端、视频流存储和回放。以下是结合这些技术的一个具体完整流程设计,涵盖了各个组件的相互关系、数据流动及关键技术点。

1. 系统组成

  • 监控摄像头:摄像头设备负责采集实时视频流并进行编码(如 H.264 或 VP8)。
  • Java 服务端:服务端基于 Spring Boot 等框架,负责摄像头的控制、视频流的处理、存储和与前端的交互。
  • Web 前端:用户通过浏览器访问 Web 应用来查看实时视频流、历史视频,并控制摄像头。
  • 文件存储模块:负责存储视频文件、视频的元数据、备份和视频流的管理。

2. 整体流程概述

整个流程可以分为以下几个阶段:

  1. 摄像头设备启动与视频流发送
  2. 服务端接收与处理视频流
  3. 视频流转发至 Web 端(WebRTC)
  4. 视频流存储
  5. 视频回放(点播)
  6. 控制和管理(如设备控制、日志等)

3. 详细流程

阶段 1:摄像头设备启动与视频流发送

  1. 摄像头初始化
    • 摄像头设备(如基于 RTSP 协议的设备)在启动时连接到 IoT 平台的 Java 服务端,进行身份验证。
    • 摄像头通过 RTSP 或 WebRTC 协议采集视频数据流。视频数据流使用常见编码格式如 H.264(或者 VP8/VP9)压缩,降低带宽需求。
  2. 视频流发送
    • 摄像头设备开始将视频流推送至 流媒体服务器(如 KurentoWowzaFFmpeg 等)或直接通过 WebRTC 与服务端建立点对点连接。

阶段 2:服务端接收与处理视频流

  1. 服务端接入
    • Java 后端(基于 Spring Boot 或其他微服务框架)作为 媒体服务器 接入接收到的视频流。
    • 后端可以选择使用 WebSocketWebRTC 进行实时数据传输,向 Web 前端推送视频流。
    • 服务端负责接收流数据并进行进一步处理,如实时转码、录制和转发。
  2. 流媒体服务器
    • 如果使用 WebRTC,则视频流会通过 WebRTC 协议 传输到前端浏览器。WebRTC 会建立点对点连接,保证低延迟的实时视频传输。
    • 如果使用 RTSP 流,服务端会通过流媒体服务器(如 Kurento)将 RTSP 流转为 WebRTC 或 HLS 直播流,推送到 Web 端进行播放。
  3. 视频存储
    • 服务端在接收到视频流后,可以选择将视频数据存储到本地硬盘或 分布式存储系统(如 HDFSCeph)。
    • 存储格式可以是 MP4(常见格式)或 WebM(WebRTC 直播常用格式),并且可以结合 HLSDASH 协议进行存档和流式传输。
  4. 流的转码和存档
    • 转码:如果视频流不是所需的格式(例如,摄像头流是 H.264 编码的,而 Web 前端要求 VP8 或 WebM 格式),服务端可使用转码工具(如 FFmpeg)将其转换为所需格式。
    • 存档:视频流会被存档到服务器的文件系统或云存储(如 AWS S3)中,以便后续回放。

阶段 3:视频流转发至 Web 端(WebRTC)

  1. Web 前端接收视频流
    • WebRTC 是浏览器原生支持的协议,因此 Web 前端通过 WebRTC 与服务端建立连接,获取实时视频流。
    • 前端通过 JavaScriptWebRTC API 进行集成,设置与服务端的视频通话通道。
    • 服务端通过 WebSocketHTTP/2 向 Web 前端发送视频流。通过 WebRTC 协议,视频数据被分成多个媒体数据包进行传输,确保低延迟。
  2. 视频流的播放
    • Web 前端通过 <video> 标签WebRTC API 来显示视频。浏览器会解析接收到的视频数据并在用户设备上展示。

阶段 4:视频流存储

  1. 视频文件存储
    • 在视频流传输过程中,服务端可以在后台将视频流保存为文件(如 MP4WebM)。每个视频文件会附带元数据(如时间戳、摄像头ID、视频时长等),存储在分布式存储或云存储系统中。
    • 可以为每个摄像头配置一个文件夹,将录制的视频存储为按日期、时间命名的文件。所有视频文件会统一管理,并支持检索。
  2. 存储扩展与备份
    • 为了确保高可用性,视频存储通常会采用 冗余备份,确保视频数据的持久性。云存储服务(如 S3Aliyun OSS)通常具有自动备份和高可用性。

阶段 5:视频回放(点播)

  1. 历史视频的检索与播放
    • 用户通过 Web 前端进行历史视频回放时,Web 前端会向服务端发起请求,查询存储中视频的元数据(如摄像头ID、时间区间等)。
    • 服务端根据请求的时间段,从存储中检索相关的视频文件,并使用 流媒体协议(如 HLS 或 DASH)进行回放。
  2. 视频文件回放
    • 服务端会将视频文件转为 HLSDASH 流,确保可以按需播放视频片段。
    • Web 前端通过 HLS.jsDash.js 进行视频流的加载和播放。用户可以在 Web 前端进行播放、暂停、快进等操作。

阶段 6:控制和管理(如设备控制、日志等)

  1. 设备管理与控制
    • 用户可以通过 Web 前端控制摄像头的行为(如旋转、缩放、调整清晰度等)。控制指令通过 WebSocket 或 REST API 发送到后端。
    • 后端再通过与摄像头的通信接口(如 ONVIF 或自定义 API)向摄像头发送控制指令。
  2. 日志与数据分析
    • 服务端会记录所有设备的活动日志,包括视频流的接收、转发、存储等操作。
    • 服务端会定期生成分析报告,监控视频存储使用情况、存储空间、带宽占用等指标,帮助运维人员管理平台。

4. 总结:流程概览

  • 摄像头设备:实时采集视频流,发送至服务端。
  • 服务端
    • 接收视频流,通过流媒体服务器转发至 Web 前端或直接传输 WebRTC。
    • 存储视频文件(MP4、WebM)并提供视频存档和回放功能。
  • Web 前端
    • 通过 WebRTC 获取实时视频流,支持视频播放、控制和回放。
    • 支持与服务端的交互,进行设备控制和视频回放。
  • 文件存储模块:使用本地存储、分布式存储或云存储来存储视频文件,并提供高效的检索和回放功能。

这个设计方案确保了监控摄像头视频流的实时传输、存储、回放和设备管理的功能,同时利用了 WebRTC 技术确保低延迟的实时视频传输,并结合云存储和视频流转码技术优化存储和访问体验。

闲谈:

Http-Flv是一种适合网络视频流的传输协议,网页可以用,客户端也可以用。通常都是用在网页上。但是Http-Flv当前比较明显的不足,是不支持H265。 一般安防摄像头都会支持Rtsp和GB28181协议,但这两种协议的视频流都无法在浏览器直接播放,需要开发一个流媒体转发服务器,通过Rtsp或GB28181协议对接摄像头,然后再实时转Http-Flv或Hls协议。浏览器可以通过js插件直接播放Http-flv或Hls协议的视频流。 如果是做安防领域的流媒体服务器,非常推荐zlm,甚至说首推,因为作者在zlm中,提供了非常完整的有关ps流推拉相关的功能。如果是做直播,推荐使用srs或nginx+rtmp。 不要无脑webrtc,要搞清楚webrtc合适的应用场景 ,不要什么地方都想着webrtc。

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

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

相关文章

Debian 12 安装配置 fail2ban 保护 SSH 访问

背景介绍 双十一的时候薅羊毛租了台腾讯云的虚机, 是真便宜, 只是没想到才跑了一个月, 系统里面就收集到了巨多的 SSH 恶意登录失败记录. 只能说, 互联网真的是太不安全了. 之前有用过 fail2ban 在 CentOS 7 上面做过防护, 不过那已经是好久好久之前的故事了, 好多方法已经不…

ASP.NET Core Web API Hangfire

ASP.NET Core Web API Hangfire 前言一、安装二、相关代码1.代码片段2.代码片段3.运行效果 三、测试代码1.即发即弃作业2.延迟作业3.重复作业4.延续作业5.页面调度作业 前言 &#x1f468;‍&#x1f4bb;&#x1f468;‍&#x1f33e;&#x1f4dd;记录学习成果&#xff0c;以…

实用技巧:关于 AD修改原理图库如何同步更新到有原理图 的解决方法

若该文为原创文章&#xff0c;转载请注明原文出处 本文章博客地址&#xff1a;https://hpzwl.blog.csdn.net/article/details/144738332 长沙红胖子Qt&#xff08;长沙创微智科&#xff09;博文大全&#xff1a;开发技术集合&#xff08;包含Qt实用技术、树莓派、三维、OpenCV…

【Ubuntu 20.4安装截图软件 flameshot 】

步骤一&#xff1a; 安装命令&#xff1a; sudo apt-get install flameshot 步骤二&#xff1a; 设置快捷方式&#xff1a; Ubuntu20.4 设置菜单&#xff0c;点击 号 步骤三&#xff1a; 输入软件名称&#xff0c; 软件快捷命令&#xff08;flameshot gui&#xff09;&am…

ue5 pcg(程序内容生成)真的简单方便,就5个节点

总结&#xff1a; 前情提示 鼠标单击右键平移节点 1.编辑-》插件-》procedural->勾选两个插件 2.右键-》pcg图表-》拖拽进入场景 3.先看点point 右键-》调试(快捷键d)->右侧设置粒子数 3.1调整粒子数 可以在右侧输入框&#xff0c;使用加减乘除 4.1 表面采样器 …

JavaWeb(一) | 基本概念(web服务器、Tomcat、HTTP、Maven)、Servlet 简介

1. 基本概念 1.1、前言 web开发&#xff1a; web&#xff0c;网页的意思&#xff0c;www.baidu.com静态 web html,css提供给所有人看的数据始终不会发生变化&#xff01; 动态 web 淘宝&#xff0c;几乎是所有的网站&#xff1b;提供给所有人看的数据始终会发生变化&#xf…

CTFshow-SSRF文件上传

web351 <?php error_reporting(0); highlight_file(__FILE__); $url$_POST[url]; $chcurl_init($url); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $resultcurl_exec($ch); curl_close($ch); echo ($result); ?> 构造POST …

线性代数行列式

目录 二阶与三阶行列式 二元线性方程组与二阶行列式 三阶行列式 全排列和对换 排列及其逆序数 对换 n阶行列式的定义 行列式的性质 二阶与三阶行列式 二元线性方程组与二阶行列式 若是采用消元法解x1、x2的话则得到以下式子 有二阶行列式的规律可得&#xff1a;分…

Gaea学习笔记总结

Gaea 是一款地形创建软件,它内置了丰富的地貌节点,能快速生成像山脉、荒原峡谷、河流、湖泊等地貌特征。 节点解释使用方法概述Primitives(基本体)Constant(常数)创建输出,一般用来输出Hight,Color,Noise,很少直接使用,而是用来连接上一个节点。一般用来输出Hight,…

初探C语言|C语言中有哪些操作符呢?

文章目录 前言算术操作符示例 移位操作符原码,反码 与补码正数负数计算 左移<<右移>> 位操作符例题 赋值操作符单目操作符sizeof 操作符 关系操作符逻辑操作符短路现象 条件操作符逗号表达式下标引用、函数调用和结构成员表达式求值算术转换操作符属性 欢迎讨论: 如…

GXUOJ-算法-第一次作业

1.整数划分 问题描述 GXUOJ | 整数划分 题解 #include<bits/stdc.h> using namespace std; const int N1010,mod1e97;int n; int f[N];int main(){cin>>n;f[0]1;for(int i1;i<n;i){for(int ji;j<n;j){f[j](f[j]f[j-i])%mod;}}cout<<f[n]; } 2.汉诺塔…

理想的以太网网络故障排查工具:LinkXpert M3

在排查铜缆、光纤和Wi-Fi以太网故障时&#xff0c;通常需要多种昂贵的工具&#xff0c;操作起来会很复杂。因此&#xff0c;我们推出了LinkXpert M3 —— 一个专为铜缆、光纤和Wi-Fi以太网网络故障排查而设计的工具。它功能强大、体积小巧、性价比高&#xff0c;无疑是您值得信…

Git如何设置和修改当前分支跟踪的上游分支

目录 前言 背景 设置当前分支跟踪的上游分支 当前分支已有关联&#xff0c;删除其关联&#xff0c;重新设置上游 常用的分支操作 参考资料 前言 仅做学习记录&#xff0c;侵删 背景 在项目开发过程中&#xff0c;从master新建分支时&#xff0c;会出现没有追踪的上游分…

专业版pycharm与服务器连接

一、先连接服务器 先创建配置&#xff1a; 名字随便取一个&#xff1a; 点击测试连接测试是否连接成功&#xff1b; 二、添加解释器 添加解释器&#xff0c;这个解释器是最开始在xshell中创建好的虚拟环境&#xff0c;具体虚拟环境创建可参考这篇&#xff1a;AutoDL服务器深…

LabVIEW如何学习FPGA开发

FPGA&#xff08;现场可编程门阵列&#xff09;开发因其高性能、低延迟的特点&#xff0c;在实时控制和高速数据处理领域具有重要地位。LabVIEW FPGA模块为开发者提供了一个图形化编程平台&#xff0c;降低了FPGA开发的门槛。本篇文章将详细介绍LabVIEW FPGA开发的学习路径&…

ISDP010_基于DDD架构实现收银用例主成功场景

信息系统开发实践 &#xff5c; 系列文章传送门 ISDP001_课程概述 ISDP002_Maven上_创建Maven项目 ISDP003_Maven下_Maven项目依赖配置 ISDP004_创建SpringBoot3项目 ISDP005_Spring组件与自动装配 ISDP006_逻辑架构设计 ISDP007_Springboot日志配置与单元测试 ISDP008_SpringB…

中学数学:一个函数值计算题

在数学的领域中&#xff0c;函数是一种描述变量之间关系的桥梁&#xff0c;它能够揭示出看似复杂现象背后的简洁规律。通过函数&#xff0c;我们可以预测、分析并解决实际问题。在这张图片中&#xff0c;我们看到了一位数学爱好者手写的解题过程&#xff0c;它展示了如何巧妙地…

#渗透测试#漏洞挖掘#红蓝攻防#常见未授权访问漏洞汇总

免责声明 本教程仅为合法的教学目的而准备&#xff0c;严禁用于任何形式的违法犯罪活动及其他商业行为&#xff0c;在使用本教程前&#xff0c;您应确保该行为符合当地的法律法规&#xff0c;继续阅读即表示您需自行承担所有操作的后果&#xff0c;如有异议&#xff0c;请立即停…

基于Oauth2的SSO单点登录---前端

Vue-element-admin 是一个基于 Vue.js 和 Element UI 的后台管理系统框架&#xff0c;提供了丰富的组件和功能&#xff0c;可以帮助开发者快速搭建现代化的后台管理系统。 一、基本知识 &#xff08;一&#xff09;Vue-element-admin 的主要文件和目录 vue-element-admin/ |--…

华为 AI Agent:企业内部管理的智能变革引擎(11/30)

一、华为 AI Agent 引领企业管理新潮流 在当今数字化飞速发展的时代&#xff0c;企业内部管理的高效性与智能化成为了决定企业竞争力的关键因素。华为&#xff0c;作为全球领先的科技巨头&#xff0c;其 AI Agent 技术在企业内部管理中的应用正掀起一场全新的变革浪潮。 AI Ag…