前言:
这次我们来做一个关于视频监控的基础小项目,需要我们用到网络的相关知识,还会学到好多优秀的网络协议,下面让我们开始对物联网视频监控进行一个大体框架的介绍吧
目录
项目内容:
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板的性能要求不高,主频200MHz的ARM芯片也能实现
mjpg-streamer缺点:
只能实现局域网内的视频监控
要实现互联网视频监控,需要另外实现内网穿透
mjpg-streamer没有实现声音传输
mjpg-streamer项目已经不再维护,仅仅建议用于学习
3.使用流媒体
我们需要写3个程序:
在连接摄像头的ARM板子上,实现一个推送程序:它一边读取摄像头数据,一边把数据推送给服务器
在服务器上,实现“流媒体服务器”程序:它接收ARM板发来的数据,并把数据转换格式后发给手机等客户端
在手机等客户端上,实现拉取程序:它从服务器上拉取数据,并显示出来
实际上,我们可以把互联网功能去掉:
把“推送程序”、“流媒体服务器”程序,都在ARM板上运行;手机等客户端只能在同一个局域网里观看视频
或者也使用内网穿透技术实现互联网视频监控
我们并不需要从头实现这些功能:
推送程序:ffmpeg
流媒体服务器程序:Nginx
客户端程序:VLC浏览器
我们需要了解一些协议:
程序一多,大家都遵守一些协议才好协同工作
有很多流媒体协议
STMP、HTTP-FLV、HLS
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 只能用在拉流端