第十章综合实例 - 视频监控系统_第1页
第十章综合实例 - 视频监控系统_第2页
第十章综合实例 - 视频监控系统_第3页
第十章综合实例 - 视频监控系统_第4页
第十章综合实例 - 视频监控系统_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式应用程序设计

第十章综合实例-视频监控系统

视频监控系统的系统组成音视频服务器的主要功能、工作流程音视频客户端的主要功能通信控制协议的设计及协议规则传输控制功能的实现方法用户检验功能的实现方法控制命令处理功能的实现方法云台转动控制的实现方法线程相关的实现方法本章课程:210.1视频监控系统概述

10.1.1

系统组成10.1.2

音视频服务器10.1.3音视频客户端10.1.4通信传输控制协议10.1.1

系统组成视频监控系统是一款综合的系统软件,从功能上分主要包括3大部分:视频服务器部分、客户端部分以及服务器与客户端的通信部分。服务器的功能是进行音视频采集、音视频编码,为用户提供控制服务器的各个界面和API函数。音视频服务器是整个监控系统的核心部分,这部分可根据不同的开发板进行实际操作,分为软硬件编解码两部分。客户端的功能主要是接受服务器传送过来的音视频数据并进行解码,此外还需要提供一个远程控制界面,用来远程登录服务器进行服务器的配置等操作,以方便用户使用。通信部分主要的功能是连接服务器与客户端,这也是本章的重点所在,双方的通信协议在这个模块中将被完整、详细地定义。客户端发送指定格式的信息到服务器端,服务器端解析这些信息,并完成相关的功能。在本章中,将详细介绍服务器端的传输控制、用户检验、控制命令处理、云台转动控制以及线程相关的功能实现。10.1.1

系统组成视频监控系统系统功能图10.1.2

音视频服务器音视频服务器部分按功能划分主要包括4个模块:音视频编码模块、服务器与云台控制模块、数据分发模块、安全模块。音视频编码部分只做一件事,就是将摄像头和拾音器采集来的数据进行编码,编码的参数设定参考配置文件相关参数。服务器与云台的控制是音视频服务器软件的主要部分,这部分主要有以下功能。文件存储,包括存储策略的制定与实施文件索引与下载字幕叠加的配置,包括字符格式、位置、大小等恢复默认设置云台的转动控制图10.2服务器端工作流程摄像头的变焦和变光圈亮度、对比度、色度、饱和度的获取和设置分辨率的获取和修改实时截图码率的获取和设置帧率(Framerate)的获取和设置主动注册系统日志移动侦测遮挡10.1.2

音视频服务器服务器端工作流程10.1.3音视频客户端客户端部分的设计包括播放器与控制界面两大部分的内容。客户端的设计在PC机上完成,用户界面登陆后可立即获取服务器的现有参数;界面提供随时从服务器手动获取参数的功能,可向服务器发出各种单项指令,也可发出多项指令的组合。10.1.3音视频客户端客户端工作流程10.1.4通信传输控制协议通信传输控制协议主要用于处理网络视频监控系统的服务器端与客户端的通信控制,定义了视频监控系统中数据传输的标准格式,其目的是允许服务器端和客户端能够以一个标准的过程进行交互,有利于系统的稳定性及可扩展性。1.数据包格式2.包头标识格式10.1.4通信传输控制协议数据包格式通信传输控制协议是一套完整明确的控制命令及数据传输的打包与解析的协议。该协议覆盖所有需要远程控制的选项,并为单独的命令或者复合命令提供统一的数据打包方式,其数据包的结构由包头标识和命令参数组成。考虑到实例的简易性,将命令参数设置为一个8位的数据。根据这个定义,读者可以设计出相应的数据包结构体,如下所示:struct

reply_msg

{

ctl_hdrhead;/*包头标识*/chardata;/*命令参数*/};10.1.4通信传输控制协议包头标识就是上述数据包的包头部分,这个标识是客户端和服务器端通信的关键,主要通过解析客户端的命令来进行相应的操作。包头标识的格式如下所示:

10.1.4通信传输控制协议根据定义,读者可以设计出相应的包头标识结构体,如下所示:typedef

struct_control_data_header

{uint16_t len;unsignedint type:4;unsignedint mo:4;uint8_t ttl;uint8_t ki;}ctl_hdr;10.2基本数据结构/*types.h*/#ifndef__TYPE_H__#define__TYPE_H__typedef

intBOOL;typedeflongintLONG;typedefshortintSHORT;typedefcharCHAR;typedefunsignedlongintDWORD;typedefunsignedshortWORD;typedefunsignedcharBYTE;typedefunsignedintUINT;typedeflonglongINT64;typedefunsignedlonglongUINT64;typedefvoid*LPVOID;typedef

intHANDLE;//指向文件描述符的指针#ifndefTRUE#defineTRUE1#endif#ifndefFALSE#defineFALSE0#endif#ifndefINVALID_HANDLE_VALUE#defineINVALID_HANDLE_VALUE-1#endif#endif10.2基本数据结构/*define.h*/#ifndefBLX_DEFINE_H#define BLX_DEFINE_H#include"types.h"typedef

struct_control_data_header

{uint16_t len;unsignedinttype:4; unsignedintmo:4;

uint8_t ttl;uint8_t ki;}ctl_hdr;#defineTYPE_SET 1#defineTYPE_QUERY 2#defineTYPE_REPLY 4/*用户状态选项*/#defineMO_SERVER 0#defineMO_CLIENT 1#defineMO_BROADCAST 2#defineMO_CTRL_SET 3#defineMO_CTRL_GET 4#defineMO_CTRL_REPLAY 5/*KI数据格式,具体定义的对应项请参照表10.6*/#defineKI_ACCESS_MOD 100#defineKI_IP_SET 101#defineKI_RATE_SET 102#defineKI_FRAME_SET 103#defineKI_RESOLUTION_SET104#defineKI_CAPTION_SET 105#defineKI_BCSH_SET 106#defineKI_YUNTAI 107#defineKI_SAVE_POLICY_SET108#defineKI_SYSLOG 109#defineKI_FILE_SEARCH 110#defineKI_FILE_DOWNLOAD111#defineKI_CONFIG_RESET 112#defineKI_SPEAK_CTRL 113#defineKI_HISTORYVIDEO_CTRL114#defineKI_HEARTBEAT 115#defineKI_REGISTER 116#defineKI_ALERT 117#defineKI_REPLY 118#defineKI_GET_FILELIST 119#defineKI_GET_FILE 12010.2基本数据结构#defineKI_DEL_FILE 121#defineKI_VIDEO_CTRL 122#defineKI_MOTION_DETECTOR_SET 124#defineKI_MOTION_DETECTOR_STOP 125#defineKI_GOP_STRUCTURE_SET 126#defineKI_SNAPSHOT 127#defineKI_START 128#defineKI_STOP 129#defineKI_SETTING_END 130#defineKI_QUIT 'Q’/*云台相关定义*/#defineYT_STOP 0/*云台转动停止*/#defineYT_UP 1/*云台向上转动*/#defineYT_DOWN 2/*云台向下转动*/#defineYT_LEFT 3/*云台向左转动*/#defineYT_RIGHT 4/*云台向右转动*/#defineYT_IRIS_P 5 /*增加光圈*/#defineYT_IRIS_M 6 /*减小光圈*/#defineYT_ZOOM_P 7 /*增加景深*/#defineYT_ZOOM_M 8 /*减少景深*/#defineYT_FOCUS_P 9 /*增大焦距*/#defineYT_FOCUS_M 10 /*减小焦距*/#defineYT_AUTOSCAN_P 11/*增加自动扫描*/#defineYT_AUTOSCAN_M 12/*减小自动扫描*//*返回消息,主要用于定义各种出错类型*/#defineRPL_OK 0#defineRPL_SYS_ERR 1#defineRPL_NOSIGNAL 2#defineRPL_NOSPACE 3#defineRPL_SYNTAX_ERR 4#defineRPL_ARG_ERR 5#defineRPL_QUERY_ERR 6#defineRPL_READ_ERR 7#defineRPL_WRITE_ERR 8#defineRPL_DEV_NOMOV 9#defineRPL_NOFILE 10#defineRPL_AUTH_PASSED11#defineRPL_AUTH_FAILED12#defineRPL_NOT_IMPLEMENT254#defineRPL_UNKOWN_ERR 255#defineRPL_RUNNING 253#defineRPL_DEV_BUSY 'B'#defineSPEAK_START '1'//喊话开始#defineSPEAK_STOP '2'//喊话结束#endif10.3功能实现10.3.1传输控制服务器端的传输控制部分主要完成服务器端和客户端的通信过程,解析客户端所发送的信息,并调用相关的操作函数。首先,服务器端和客户端先建立起TCP连接,服务器端调用socket()函数,并指定其中的参数为SOCK_STREAM(字节流套接字),之后服务器端再依次调用bind()函数和listen()函数来侦听客户端的连接请求。其中,若bind()函数首次调用失败,则会等待5s再次调用尝试。10.3功能实现10.3.1传输控制在建立起服务器端和客户端的连接之后,服务器端就可以解析多个客户端的命令了。在本系统中设置了客户端的最大连接数为10个。服务器端通过设置多个线程来处理这些不同的客户端请求,他们之间的关系如图10.4所示:服务端的多线程10.3功能实现10.3.2用户检验在该系统

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论