视频监控系统在智能家居中的应用
中国安防行业网    2013/10/22 15:02:00    关键字:视频监控系统,智能家居      浏览量:

  ●VDIOCGCHAN:Ioctl操作得到信号源的基本信息,保存在video channel结构体中。

  ●VDIOCSCHAN:Ioctl操作根据video channel结构体中的值来设置信号源的初始参数。

  ●VIDIOCGWlN:loctl操作得到采集图像区域的基本信息,保存在video window结构体中。

  ·VIDIOCSWIN:loctl操作根据video window结构体中的值来设置采集图像区域大小等参数。

  3.2.2 SDL简介

  SDL全称是SimpleDirectMediaLayer,即简单的指导媒体层【201。SDL是一个跨平台的多媒体函数库,被用来设计成在低层访问音频、键盘、鼠标、游戏杆,基于OPENGL(一种3D图象开发函数库)的3D硬件,和2D图象帧缓冲区。它被广泛的用于基于MPEG的媒体播放软件,模拟器,和许多著名的游戏。SDL是一个跨平台的函数库,几乎支持现今所有平台:Linux,Windows,WindowsCE,BeOS,MacOS,MacOSX,FreeBSD,NetBSD,OpenBSD,BSD/OS,Solaris.IRIX.andQNX。

  SDL用C语言写成,但是可以很容易在C++下面工作,并且SDL绑定了许多其它的语言,这其中就包括Ada,C撑,Eiffel,Erlang,Euphoria,Guile,Haskell,Java,Lisp,Lua,ML,Objective C,Pascal,Perl,PHP,Pike,Pliant,Python,Ruby,andSmalltalk。

  3.2.3服务器端设计与实现

  Servfox是流媒体服务器,可以进行视频的采集和传输,用来做监控服务器。

  Servfox利用了前面介绍的Vide04Linux编程模块提供的接口从摄像头设备中提取图像帧。提取流程如图3-2所示。在服务程序开始时,初始化V4L模块,初始化包括设备名称、图像分辨率、图像格式和采集方法等。通过V4L模块对采集设备属性的提取,确定采集的参数。并启动两个线程,一个线程是图像采集线程,另一个是服务线程。

  图像采集线程采用循环机制。通过V4L模块进行图像采集,并且对图像进行压缩,减小图像的体积。根据主线程变量videoln.signalquit判断是否结束采集。

  服务线程主要提供网络数据传输和对图像采集的控制。通过监听serversocket,接受客户端的链接请求,并建立新的socket进行数据和控制消息的传输。根据客户端发来的控制信息来调整V4L采集模块的参数,从而调整采集的图像。调整包括图像的亮度、对比度和色彩等。数据传输是将图像采集线程获得的图像,发送给客户端。发送分为两个步骤,首先发送本次发送图像帧的一些基本信息,如消息、图像的帧序号、图像的各种属性等。然后再将图像的数据通过socket发送给客户端。

  下面的数据结构是服务器端发给客户端的数据结构。其中包括消息、帧序号、顺序号、延迟时间等等属性

  structframe_t{

  charheader[5];

  intnbframe;

  doubleseqtimes;

  intdeitatimes;

  int w:

  inth:

  intsize;

  intformat;

  unsigned shortbright;

  unsignedshortcontrast;

  unsignedshortcolors;

  unsignedshortexposure;

  unsignedcharwakeup;

  intacknowledge;

  )

  对应的,客户端发送给服务器的消息的数据结构如下,其中包括消息、采样率、亮度调整、对比度调整等信息。

  ,

  struct client_t{

  charmessage[4];

  unsignedcharx;

  unsignedchary;

  unsignedcharfps;

  unsignedcharupdobright;

  unsignedcharupdocontrast;

  unsignedcharupdocolors;

  unsignedcharupdoexposure;

  unsignedcharupdosize;

  unsignedcharsleepon;

  )

  3.2.4客户端设计与实现

  spcaview有三种工作模式,通过用户输入参数不同启动不同的工作模式。三种工作模式分别是:

  _播放远程servfox传输的视频。这种工作模式下,spcaview作为客户端,servfox作为服务器端进行协同工作。spcaview通过TCP/IP连接服务器端,发送客户端用户的一些参数设定,并接受服务器端采集的图像数据,进行解码显示。

  ■通过本地的摄像头进行视频获取。通过本地摄像头获取视频图像,显示并存储到本地。在这个工作模式下,主要使用了V4L的视频截取功能和SDL的图像显示功能。

  ■播放本地的avi文件。播放本地磁盘上存储的采集视频文件。在三种工作模式中都通过对SDL的调用实现了图像的显示等功能。其中对SDL的调用过程如下:

  1.调用SDL Init0动态的加载和初始化SDL库。该函数带有一组标记来表

  示哪部分需要激活,SDL INIT AUDIO表示音频部分,SDL INIT VlDEO表示视频部分,SDL INIT CDROM表示光驱部分,SDL I-NITTIMER表示定时器部分。这几个部分可以任意搭配选择。

  2.选择和设置视频模式,

  SDLSetVideoMode(640,480,16,SDL SWSURFACE)。其中包括视频分辨率,色彩深度和模式。

  3.设置定时器及回调函数,SDL SetTimer((Uint32)interval,callback。.timer)其中包括定时器的触发间隔时间和触发时的回调函数。

  4.使用完毕最后调用SDL Quit(),对SDL库进行释放。

[1] [2] [3] [45 [6