被监控端实现
- 项目准备
VS/VC++的任意版本
- 创建项目
创建空项目。
- 搭建被监控端的开发环境
准备使用opencv处理图像,所以需要安装opencv, 并搭建opencv的开发环境。
步骤1. 安装opencv
双击安装包,提示安装路径,直接输入 D:\
然后点击 Extract 按钮即可。
安装后的目录类似如下:
步骤2:配置OpenCV的开发环境
配置方法1:
找助教老师领取项目模板(项目模板已经把开发环境搭建好了)
配置方法2:
手动配置,可以向助教老师索取《配置视频》, 一边看视频,一边配置。
以下为手动配置说明:
4.项目架构
5.网络协议初始化
6.网络套接字和网络地址初始化
7.等待监控端发起请求
8.打开摄像头
9.接受监控指令
10.采集监控数据
11.发送监控数据
12.关闭客户端套接字
13.关闭摄像头
14.关闭服务器套接字
数据传输格式
粘包
直接发送文件内容,讲导致“粘包”
最简单的解决方案
被监控端,先发文件长度,再发文件内容
监控端:先接受文件长度,再接受文件内容
更加完善的解决方案
0xFE 1-2 N 2 0XEF
1
0->1 1->0 99
相关项目
某VIP学员的8000 上位机IT外包
代码实现
...
学员相关就业
一线大厂:(二本,应届)
普通上市公司:(函授专科,已毕业)
项目提升
进一步优化:
- 不使用文件方式,直接视频数据传输,读写文件耗时
- 要实时传输数据,就要对数据进行压缩,否则传输效率比较低,实时性不高。
使用算法进行压缩
最著名的视频压缩算法:H.264算法,可以使传输效率提高一倍!
发送端压缩,接收端解压
- 使用自定义协议,来确保数据的安全性
技术前景
视频监控的技术要点:服务器开发!
服务器开发课程大纲:(共245节)
https://ke.qq.com/course/388295?tuin=51f18b5a
赠送高性能网络开发框架libevent以及电子书
附录-参考代码
被监控端
监控端
5.项目缺陷
现在的代码,为什么只能在局域网内监控呢????
而是因为:IP地址:内网IP, 外网IP
192.168.XXX.XXX ----> 外网IP
<--x---
192.168.XXX.XXX ---> 云服务器(阿里云,腾讯云,华为云) <------ 192.168.xxx.xxx
怎样突破局域网限制
云服务器中转
内网穿透