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 只能用在拉流端

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ROB的结构与作用

在流水线的提交(Commit)阶段,之所以能够将乱序执行的指令变回程序中指定的顺序状态,主要是通过重排序缓存(Reorder Buffer, ROB)来实现的 ROB本质上是一个FIFO在它当中存储了一条指令的相关信息,例如这条指令的类型、结果、目的寄存器和异常…

SpringCloud面试题——Sentinel

一:什么是Sentinel? Sentinel是一个面向分布式架构的轻量级服务保护框架,实现服务降级、服务熔断、服务限流等功能 二:什么是服务降级? 比如当某个服务繁忙,不能让客户端的请求一直等待,应该立刻返回给客户端一个备…

安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock)驱动程序

环境情况: 物理机win10系统 虚拟机windowserver08系统 vmware 16.0的版本 问题触发: 在虚拟机win7系统上安装vmware tools出现提示,报错信息“安装程序无法自动安装Virtual Machine Communication Interface Sockets(VSock&a…

Android 11.0 systemui锁屏页面时钟显示样式的定制功能实现

1.前言 在11.0的系统ROM定制化开发中,在进行systemui的相关开发中,当开机完成后在锁屏页面就会显示时间日期的功能,由于 开发产品的需求要求时间显示周几上午下午接下来就需要对锁屏显示时间日期的相关布局进行分析,然后实现相关功能 效果图如图: 2.systemui锁屏页面时钟显…

Ubuntu Destktop 22.04 设置 ssh 超时时间

Ubuntu Destktop 22.04 使用 ssh 连接服务器时,发现一段时间不操作就会自动断开连接,解决方法如下: 打开 /etc/ssh/ssh_config 文件: sudo vim /etc/ssh/ssh_config在文件最后添加: # ssh 客户端会每隔 30 秒发送一…

4fiddler抓包工具的使用

一、定义 1.1 抓包的定义 说明:客户端向服务器发送请求以及服务器响应客户端的请求,都是以数据包来传递的。 抓包(packet capture):通过工具拦截客户端与服务器交互的数据包 1.2 fiddler的介绍 Fiddler是一个http协议调试代理工具&#…

将数组转换为字符串 numpy.array_repr()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 将数组转换为字符串 numpy.array_repr() [太阳]选择题 请问关于以下代码最后输出的数据类型是? import numpy as np a np.array([0, 1, 2]) print("【显示】a ",a) pr…

Node CLI 之 Yargs (2)

什么是 yargs? yargs 是一个用于处理命令行参数的 Node.js 库 安装 yargs npm install yargs简单例子 不定义任何选项,直接便可以使用 定义命令 const yargs require(yargs)yargs.command(hello, Prints hello world, (yargs) > {}, (argv) >…

docker-compose的介绍与使用

一、docker-compose 常用命令和指令 1. 概要 默认的模板文件是 docker-compose.yml,其中定义的每个服务可以通过 image 指令指定镜像或 build 指令(需要 Dockerfile)来自动构建。 注意如果使用 build 指令,在 Dockerfile 中设置…

2020年第九届数学建模国际赛小美赛C题亚马逊野火解题全过程文档及程序

2020年第九届数学建模国际赛小美赛 C题 亚马逊野火 原题再现: 野火是指发生在乡村或荒野地区的可燃植被中的任何不受控制的火灾。这样的环境过程对人类生活有着重大的影响。因此,对这一现象进行建模,特别是对其空间发生和扩展进行建模&…

docker mysql8 设置不区分大小写

docker安装Mysql8.0的坑之lower_case_table_names_docker mysql lower_case_table_names-CSDN博客https://blog.csdn.net/p793049488/article/details/108365929 docker run ‐di ‐‐nametensquare_mysql ‐p 33306:3306 ‐e MYSQL_ROOT_PASSWORD123456 mysql

区块链实验室(32) - 下载arm64的Prysm

Prysm是Ethereum的共识层。 1. 下载prysm.sh curl https://raw.githubusercontent.com/prysmaticlabs/prysm/master/prysm.sh --output prysm.sh && chmod x prysm.sh2. 下载x86版prysm共识客户端 ./prysm.sh beacon-chain --download-only3.下载arm64版prysm共识客…

Wincc归档多重项目时,提示无法归档打开的项目-解决办法

Wincc归档多重项目时,提示无法归档打开的项目-解决办法 如下图所示,在进行归档时提示如下报错信息: 重启电脑没用,还是提示相同的信息: 归档 多重项目 (256:67): 无法访问文件 ‘D:\Siemens Pro\QWDCS_MP\QWDCS_MP\QWDCS_Pr\wi…

六级高频词组2

目录 词组 参考链接 词组 51. arise from(be caused by) 由…引起。 52. arrange for sb.sth. to do sth. 安排…做… 53. arrive on 到达; arrive at 到达某地(小地方);得出,作出&#x…

普冉(PUYA)单片机开发笔记(9): FLASH 读写

概述 单片机的 ROM 容量虽然不大,PY32F003 有 64K 字节的 ROM,但实际应用中会在 MCU 中存储持久化的数据,例如:在物联网应用中,需要把物模型持久化,作为非易失性数据,掉电了也要保存。这就要用…

图文教程:stable-diffusion的基本使用教程 txt2img(多图)

之前我介绍了SD的安装过程,那么这篇将介绍怎么使用SD 使用模型 SD安装好之后,我们只有一个默认的模型。这个模型很难满足我们的绘图需求,那么有2种方法。 1是自己训练一个模型(有门槛)2是去网站上找一个别人练好的模…

宇视科技视频监控 main-cgi 文件信息泄露漏洞复现

0x01 产品简介 宇视(Uniview)高清网络摄像机是一种高性能的网络摄像机,它可以通过网络进行视频传输和监控。该摄像机采用先进的视频技术,具有高清晰度、低照度、宽动态等特点,能够提供高质量的视频图像。 0x02 漏洞概述 宇视(Uniview)高清网络摄像机存在信息泄露漏洞…

【桌面应用开发】Tauri是什么?基于Rust的桌面应用

自我介绍 做一个简单介绍,酒架年近48 ,有20多年IT工作经历,目前在一家500强做企业架构.因为工作需要,另外也因为兴趣涉猎比较广,为了自己学习建立了三个博客,分别是【全球IT瞭望】,【…

Edge浏览器版本更新后Copilot按钮消失的解决应对方式

需求背景 今天突然发现Edge浏览器右上角的Copilot按钮不见了,排查了一下,发现可能是浏览器自动升级到120版本后,关闭了右上角的Copilot按钮。案发现场如下: 原因如下: 说实话,人家这个插件还是很好用的&…