智慧家居中的视频监控系统-------1、视频监控
方案一
1、适用场景
适用在一些成本较低的玩具、智能家居上面
2、使用原理
假设在A地有一个摄像头接在可以运行,他会录制东西,在B地我们可以通过手机连接一个wifi热点进行观看摄像头可以拍摄到的东西,如果AB距离近可以用局域网来连接。
3、程序框架:
开发板上至少有两个线程,一个摄像头线程:打开摄像头初始化,从摄像头读取数据
另一个是网络线程,等待别人连接他,如果有人连接他,他就把摄像头数据发送给手机这边
手机那边至少两个线程,一个网络线程,去连接另一边网络线程之后得到数据
另一个显示线程将得到的数据在屏幕上显示出来
我们可以自己写,但也可以用一些开源的工具,比如mjpg_streamer,它可以运行在Linux的板子上面,读取摄像头数据发给手机。
手机方面可以自己写程序,也可以用浏览器直接访问mjpg_streamer观看视频。
对于mjpg_streamer我有几点说明:
4、优缺点
方案二:使用流媒体
1、什么是流媒体
我们之前看视频需要下载下来然后用播放软件播放,现在可以边加载边播放,这得益于流媒体。
2、适用场景:要给成千上万人使用,例如现在火爆的主播。
介绍:
AB两地离得比较远,想用手机观看家里摄像头视频,这就涉及互联网连接服务器;
3、系统框架:
推流端:带有Linux的ARM板子读取摄像头,推送給服务器;可以用现成的开源的软件ffmpeg通过RTMP协议推送;
流媒体服务器: 服务器接受推送上来的数据,然后处理一下放在里面等待拉取;可以用现成的开源的软件Nginx;
拉流端:手机端拉取服务器里面处理好的数据,并且显示出来;可以用浏览器、播放器通过HTTP_FLV协议获取视频流据;
4、流媒体协议:
常见的协议有adobe公司的RTMP、HYP_FLY协议,或者苹果公司的HLS协议 ;
4.1、RTMP协议
4.11、原理及其连接方式:
在服务器上面有一个很大的文件, 手机一旦连接到服务器之后,就可以持续不断的获得这些文件,获得多少就可以播放多少,也可以拖动进度条,从某处开始获得并且播放;连接方式:为TCP连接
4.12、特点:
1)TCP连接易被拦截
2)服务器实时播放,可以方便的拖动进度条
3)延时小,可以用来做直播
4)配套的插件很垃圾,但可用B站的插件挽救
4.2、HTTP_FLV协议
4.21、原理及其连接方式:
在服务器上面把那些文件分为一个一个非常小的FLV数据包,手机通过HTTP连接下载到本地然后播放。
4.22、特点:
1)容易被盗取
2)只要有网络就可以上网,不会被拦截
3)延时小,可以用来做直播
4)配套的插件很垃圾,但可用B站的插件挽救
4.3、HLS协议
4.31、原理及其连接方式:
将文件切片成一个一个TS文件,手机连接到服务器之后就可以把TS文件一个一个下载下来播放;区别HTTP_FLV的是,手机得到的是一个M3U8格式的文件,里面列有一个一个播放文件组成的播放列表。
4.32、特点:
1)下载到本地,容易被盗取
2)只要有网络就可以上网,不会被拦截
3)延时大,长达5~20秒
4)配套的插件很垃圾
4.33、过程:
首先将播放的文件汇集起来,然后保存并且更新一个M3U8列表。
5、总结:后续会详细介绍他们的移植