Linux基础项目开发2:物联网监控——视频监控方案介绍(一)

前言:

这次我们来做一个关于视频监控的基础小项目,需要我们用到网络的相关知识,还会学到好多优秀的网络协议,下面让我们开始对物联网视频监控进行一个大体框架的介绍吧

目录

项目内容:

1.视频监控方案介绍

2.视频监控的作用

3.使用流媒体

4. 几种流媒体协议

5.流媒体服务:两端加一服 


项目内容:

1.视频监控方案介绍

介绍2种方案,一种可以运行在低性能的板子上,另一种是热门的流媒体方案MJPG-streamer

方案的实现

1.移植、使用                  2.框架,代码

流媒体方案的实现之ffmpeg

1.移植、使用                 2.内部流程                        3.参数讲解

流媒体方案的实现之Nginx

1.移植                            2.多场景使用

摄像头和声卡接口

1.摄像头V4L2接口        2.声卡ALSA接口

内网穿透

1.原理                           2.两种实现方法

 2.视频监控的作用

家居

        1.家庭安防               2.照顾老人、小孩        3.照顾宠物

公司

        1.仓库防火防盗        2.疫情防控(摄像头配合温度测试,自动检测体温)

农业

        1.大棚监测               2.研究记录

娱乐

        1.极限运动记录        2.风景拍摄

社会

        1.交通监测                2.安保

如果只是想在客厅查看房间的情况,不需要什么复杂的协议

 我们需要写2个程序:

        在连接摄像头的ARM板子上,实现一个服务器程序:它一边读取摄像头数据,一边等待客户端连接并发送数据

        在手机或电脑上,编写客户端程序,它会从ARM板上获得数据并显示出来

        这2个程序之间,并不需要实现复杂的协议

                        约定数据格式

                        传输一帧帧的数据

实际上,我们可以使用现成的程序:

        mjpg-streamer,它运行在ARM板上

        在手机上使用浏览器直接观看视频

mjpg-streamer优点:

        程序简单,所有源码一目了然,便于学习

        对ARM板的性能要求不高,主频200MHzARM芯片也能实现

 mjpg-streamer缺点:

        只能实现局域网内的视频监控

        要实现互联网视频监控,需要另外实现内网穿透

        mjpg-streamer没有实现声音传输

        mjpg-streamer项目已经不再维护,仅仅建议用于学习

3.使用流媒体

我们需要写3个程序:

        在连接摄像头的ARM板子上,实现一个推送程序:它一边读取摄像头数据,一边把数据推送给服务器

        在服务器上,实现“流媒体服务器”程序:它接收ARM板发来的数据,并把数据转换格式后发给手机等客户端

        在手机等客户端上,实现拉取程序:它从服务器上拉取数据,并显示出来

实际上,我们可以把互联网功能去掉:

        把“推送程序”、“流媒体服务器”程序,都在ARM板上运行;手机等客户端只能在同一个局域网里观看视频

        或者也使用内网穿透技术实现互联网视频监控

我们并不需要从头实现这些功能:

        推送程序:ffmpeg

        流媒体服务器程序:Nginx

        客户端程序:VLC浏览器

我们需要了解一些协议:

        程序一多,大家都遵守一些协议才好协同工作

        有很多流媒体协议

        STMP、HTTP-FLVHLS

 4. 几种流媒体协议

RTMP

        Real Time Messaging Protocol

        Adobe公司出品,需要Flash player才能观看

        延时小,适合直播

HttpFlv

        在HTPP上实现RTMP,传输的数据跟RTMP一样都是flv文件

        B站开源了flv.js,实现了纯HTML5观看直播,不再需要Flash player

        延时小,适合直播

        HttpFlv只能做直播,而RTMP可以实现更多操作        

        但是HttpFlv通过Http 80端口传输,穿透性强

HLS

        HTTP Live Streaming

        Apple出品

        延时大,适合看视频,不适合直播

 

5.流媒体服务:两端加一服 

注意:

        RTMP可以用在双端

        HTTPFLV 、HLS 只能用在拉流端

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

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

相关文章

手写VUE后台管理系统10 - 封装Axios实现异常统一处理

目录 前后端交互约定安装创建Axios实例拦截器封装请求方法业务异常处理 axios 是一个易用、简洁且高效的http库 axios 中文文档:http://www.axios-js.com/zh-cn/docs/ 前后端交互约定 在本项目中,前后端交互统一使用 application/json;charsetUTF-8 的请…

云计算 云原生

一、引言 云计算需要终端把信息上传到服务器,服务器处理后再返回给终端。在之前人手一台手机的情况下,云计算还是能handle得过来的。但是随着物联网的发展,什么东西都要联网,那数据可就多了去了,服务器处理不过来&…

MachMap:End-to-End Vectorized Solution for Compact HD-Map Construction

参考代码:None 动机与出发点 地平线的MapTR展现出了构建高精地图的能力,但是它的机制确实是有点复杂了。为了兼容不同车道线的朝向,环形车道线的起终点等情况,针对性设计了permute-equal的匹配逻辑,这样的逻辑真的是太…

软件测试之压力测试详解

一、什么是压力测试 软件测试中:压力测试(Stress Test),也称为强度测试、负载测试。压力测试是模拟实际应用的软硬件环境及用户使用过程的系统负荷,长时间或超大负荷地运行测试软件,来测试被测系统的性能、…

appium安卓app自动化,遇到搜索框无搜索按钮元素时无法搜索的解决方案

如XX头条,搜索框后面有“搜索”按钮,这样实现搜索操作较为方便。 但有些app没有设置该搜索按钮,初学者就要花点时间去学习怎么实现该功能了,如下图。 这时候如果定位搜索框,再点击操作,再输入文本后&#x…

SpringBootWeb请求响应之前言及状态码的详细解析

SpringBootWeb请求响应 前言 在上一次的课程中,我们开发了springbootweb的入门程序。 基于SpringBoot的方式开发一个web应用,浏览器发起请求 /hello 后 ,给浏览器返回字符串 “Hello World ~”。 其实呢,是我们在浏览器发起请求…

【算法与数据结构】332、LeetCode重新安排行程

文章目录 一、题目二、解法三、完整代码 所有的LeetCode题解索引,可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、解法 思路分析:本题比较属于困难题目,难点在于完成机票、出发机场和到达机场之间的映射关系,再…

使用yum/dnf管理软件包

本章主要介绍使用 yum 对软件包进行管理。 yum 的介绍搭建yum源创建私有仓库yum客户端的配置yum的基本使用使用第三方yum源 使用rpm安装包时经常会遇到一个问题就是包依赖,如下所示。 [rootrhel03 ~]# rpm -ivh /mnt/AppStream/Packages/httpd-2.4.37-41.modulee…

【三维重建】对极几何

极几何描述了同一场景或者物体的两个视点图像间的几何关系 可以发现P在左右相机的投影点一定在各自的极线上,如果求出极线就能缩小求解对应点的范围。 本质矩阵对规范化摄像机拍摄的两个视点图像间的极几何关系进行代数描述 规范化相机指的是相机的内参…

人工智能_机器学习063_SVR支持向量机_回归拟合天猫双十一销量方程---人工智能工作笔记0103

之前我们用线性回归做过天猫双十一销量预测的数据,现在我们再来用SVR支持向量机来做一下 首先上面是给出了销量,对应2009年到2019年的,销售额 可以看到: X=np.arange(2009,2020)-2008 统一减去2008的话看起来数据比较简单了 y=np.array([0.5,9.36,52,191,350,571,912,1207,1…

使用perl的Tie::File 模块删除文件固定行

使用perl的Tie::File 模块删除文件固定行, 为了说明简单代码中处理的是固定第二行开始的3行长度。下面给出perl代码: #! /usr/bin/perl use v5.14; use Tie::File;if (ARGV 0) {say "请输入一个文件名 !!!";exit 1; }my $filePath $ARGV[0]; tie my ar…

java工程(ajax/axios/postman)向请求头中添加消息

1、问题概述 在项目中我们经常会遇到需要向请求头中添加消息的场景,然后后端通过request.getRequest()或者RequestHeader获取请求头中的消息。 下面提供几种前端向请求头添加消息的方式 2、创建一个springmvc工程用于测试 2.1、创建工程并引入相关包信息 sprin…

C++之STL算法(1)

STL容器算法主要由、、组成;   algorithm主要有遍历、比较、交换、查找、拷贝、修改等; 1.遍历容器for_each for_each()函数用于完成容器遍历,函数参数如下: for_each(_InIt _First, _InIt _Last, _Fn _Func) 形参&#xff1a…

深度学习 Day10——T10数据增强

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 文章目录 前言一、我的环境二、代码实现与执行结果1.引入库2.设置GPU(如果使用的是CPU可以忽略这步)3.导入数据4.查…

Docker基础概念解析:镜像、容器、仓库

当谈到容器化技术时,Docker往往是第一个被提及的工具。Docker的基础概念涵盖了镜像、容器和仓库,它们是理解和使用Docker的关键要素。在这篇文章中,将深入探讨这些概念,并提供更丰富的示例代码,帮助大家更好地理解和应…

智能优化算法应用:基于混合蛙跳算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于混合蛙跳算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于混合蛙跳算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.混合蛙跳算法4.实验参数设定5.算法结果6.…

2023年华为HCIA认证H12-811题库讲解

在VRP平台上,可以通过下面哪种方式返回到上一条历史命令?( ) A、Ctr1U B、Ctr1P C、左光标 D、上光标 试题答案:BD 试题解析:在VRP系统中,ctrlU为自定义快捷键,ct…

DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1)

DevEco Studio 3.1IDE环境配置(HarmonyOS 3.1) 一、安装环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、环境安装 IDE下载地址:HUAWEI DevEco Studio和SDK下载和升级 | HarmonyOS开发者 IDE的安装就是…

Android---Kotlin 学习002

声明变量 在 Kotlin 中定义一个变量,通过关键字 var 开始。然后是变量名,在“:”后紧跟变量类型。 示例1:声明一个 int 类型的变量 var num:Int 1 示例2:声明一个 String 类型的变量 var str:String "Hello world&quo…

计算机网络——期末考试复习资料

什么是计算机网络 将地理位置不同的具有独立功能的多台计算机及其外部设备通过通信线路和通信设备连接起来;实现资源共享和数据传递的计算机的系统。 三种交换方式 报文交换:路由器转发报文; 电路交换:建立一对一电路 分组交换&a…