搜索
您的当前位置:首页正文

视频监控项目简介

来源:二三娱乐


网络视频监控系统

1、 项目简介:

网络视频监控系统主要基于C/S架构,包括前端的视频采集压缩、视频传输、监控客户端和管理服务器。

该系统的简单架构如下图所示:

编码器外部硬盘客户端IP网络 编码器服务器 外部硬盘客户端外部硬盘客户端编码器 视频采集压缩:视频采集编码器支持4路视频输入,具有视频的实时采集,视频压缩和网络传输等功能。每个视频采集设备都有自己的IP地址和网络接口,可独立工作,直接接入网络。

视频传输:视频传输部分采用基于UDP的RTP/RTCP协议来传输实时的视频数据和控制信息。管理服务器根据客户端用户的请求,进行相应的处理,并向对应前端发送相应的控制信息,各前端根据该控制信息进行响应。

监控客户端:监控客户端主要的功能有:

1、 对接收到的视频数据进行校验、排序、控制。由于视频传输采用的是RTP/UDP

协议,所以视频数据包路由到客户端时数据不能进行实时播放,必须对数据包进行排序组帧及控制丢包率。

2、 将数据包排序组帧后必须进行解码才可以实时播放,所以在监控客户端需要

视频播放器。播放器采用ffmpeg架构。

3、 监控客户端可以调整视频的传输和存储帧率;对视频的播放方式有:网络播

放、播放文件同时具有录制视频功能。

管理服务器:管理服务器将所有前端的视频设备集中起来管理,并维护客户端同他们的网络连接。

2、我的工作:

在网络视频监控这个项目中,主要负责的是监控客户端中对数据包进行校验和排序组帧这一块。在整个项目中,界面部分我主要负责的如下所示:

1、

数据校验:在整个项目中,数据校验采用CRC32循环冗余校验法。

算法的实现:①、读取数据包有效数据并获取数据包有效数据的长度。

②、采用查表方法得出CRC32校验的参数表crcTable[256]。大小为256的数组。

③、将①中得到的数据包和数据包的长度作为参数带入校验函数getcrc(char *pkg, int len)中进行校验。

④、最后返回的crc= = ((crc >> 8) & 0x00FFFFFF) ^ crcTable[ (crc^ *c) & 0xFF ];与原来数据包包头的CRC进行比较,判断两者是否相等,相等则校验通过。

2、 示:

排序组帧:排序组帧主要用到了对链表的处理。数据包包头的数据结构如下所

typedef struct _PKGHEADER{

int crc;

int seq;

struct timeval tv;

int frame_len;

}PKGHEADER;

利用链表需要设计一个结构体类型,其结构如下图所示:

typedef struct msger{

int frame;//帧号

int package;//包号

int lenth;//包的有效长度

char data[1024];//包中有效数据

struct msger *next;

}MESSAGE,* NODE;

通过读取数据包包头seq,根据seq进行排序。首先将收到的数据包包头seq与链表的表尾的pakage进行比较,进行相应的添加节点。同时在此进行超时重传控制。

因篇幅问题不能全部显示,请点此查看更多更全内容

Top