被监控端实现

  1. 项目准备

VS/VC++的任意版本

 

  1. 创建项目

创建空项目。

 

  1. 搭建被监控端的开发环境

准备使用opencv处理图像,所以需要安装opencv, 并搭建opencv的开发环境。

步骤1. 安装opencv

log 监控程序开发 视频监控开发_编程语言

双击安装包,提示安装路径,直接输入 D:\

然后点击 Extract 按钮即可。

log 监控程序开发 视频监控开发_c++_02

安装后的目录类似如下:

log 监控程序开发 视频监控开发_c++_03

步骤2:配置OpenCV的开发环境

配置方法1:

找助教老师领取项目模板(项目模板已经把开发环境搭建好了)

 

配置方法2:

手动配置,可以向助教老师索取《配置视频》, 一边看视频,一边配置。

以下为手动配置说明:

log 监控程序开发 视频监控开发_c#_04

4.项目架构

log 监控程序开发 视频监控开发_编程语言_05

log 监控程序开发 视频监控开发_log 监控程序开发_06

5.网络协议初始化

log 监控程序开发 视频监控开发_c语言_07

6.网络套接字和网络地址初始化

log 监控程序开发 视频监控开发_c++_08

7.等待监控端发起请求

log 监控程序开发 视频监控开发_c++_09

8.打开摄像头

log 监控程序开发 视频监控开发_c#_10

log 监控程序开发 视频监控开发_编程语言_11

9.接受监控指令

log 监控程序开发 视频监控开发_c++_12

10.采集监控数据

log 监控程序开发 视频监控开发_c语言_13

11.发送监控数据

log 监控程序开发 视频监控开发_c++_14

12.关闭客户端套接字

log 监控程序开发 视频监控开发_c语言_15

13.关闭摄像头

log 监控程序开发 视频监控开发_c++_16

14.关闭服务器套接字

log 监控程序开发 视频监控开发_编程语言_17

数据传输格式

粘包

直接发送文件内容,讲导致“粘包”

log 监控程序开发 视频监控开发_c++_18

最简单的解决方案

log 监控程序开发 视频监控开发_c#_19

被监控端,先发文件长度,再发文件内容

 监控端:先接受文件长度,再接受文件内容

更加完善的解决方案

log 监控程序开发 视频监控开发_编程语言_20

0xFE    1-2     N      2                                           0XEF

  1

 

         0->1                 1->0                            99  

相关项目

某VIP学员的8000 上位机IT外包

log 监控程序开发 视频监控开发_c#_21

代码实现

...

学员相关就业

一线大厂:(二本,应届)

log 监控程序开发 视频监控开发_c语言_22

普通上市公司:(函授专科,已毕业)

log 监控程序开发 视频监控开发_c++_23

项目提升

进一步优化:

  1. 不使用文件方式,直接视频数据传输,读写文件耗时
  2. 要实时传输数据,就要对数据进行压缩,否则传输效率比较低,实时性不高。

   使用算法进行压缩

   最著名的视频压缩算法:H.264算法,可以使传输效率提高一倍!

   发送端压缩,接收端解压

  1. 使用自定义协议,来确保数据的安全性

 

技术前景

视频监控的技术要点:服务器开发!

 

 

服务器开发课程大纲:(共245节)

https://ke.qq.com/course/388295?tuin=51f18b5a

log 监控程序开发 视频监控开发_log 监控程序开发_24

赠送高性能网络开发框架libevent以及电子书

log 监控程序开发 视频监控开发_c#_25

附录-参考代码

被监控端

log 监控程序开发 视频监控开发_c语言_26

log 监控程序开发 视频监控开发_c++_27

log 监控程序开发 视频监控开发_c#_28

监控端

log 监控程序开发 视频监控开发_c语言_29

log 监控程序开发 视频监控开发_c语言_30

log 监控程序开发 视频监控开发_c#_31

log 监控程序开发 视频监控开发_c语言_32

5.项目缺陷

现在的代码,为什么只能在局域网内监控呢????

而是因为:IP地址:内网IP, 外网IP

192.168.XXX.XXX   ---->    外网IP

                 <--x---   

 

192.168.XXX.XXX  ---> 云服务器(阿里云,腾讯云,华为云) <------   192.168.xxx.xxx

 

怎样突破局域网限制

云服务器中转

内网穿透