嵌入式视频监控系统设计方案
2.3 视频流网络传输的实现
本系统视频的网络传输是基于面向连接的TCP协议来实现。TcP/IP协议数据传输可分为3个阶段:建立连接,传输数据,断开连接[6]。首先服务器通过socket()函数创建套接字,使用bind()函数将创建好的套接字与端口绑定,然后调用listen()函数使服务器处于监听状态,等待客户端应用程序的连接请求。客户端应用程序通过打开一个socket即套接字,来使用TCP服务。当服务器接收到用户的连接请求后,服务器调用accept()函数建立双方连接,响应客户的请求,并创建新线程,该线程负责把数据发送给用户。
3 嵌入式Web服务器的设计
目前,B/S模式的网络结构因其具有先进的开发技术、优越的可管理性和可维护性,以及模式简单方便等优点而成为最流行的应用方式"]。本系统采用的正是该结构,因而用户通过嵌入式Web服务器,使用IE浏览器即可远程访问嵌入式设备,实现对现场的远程监。
Boa是Linux支持web服务器之一,它是一个单任务的http服务器,具有代码结构简单、支持动态CGI、“p服务,并且源代码开放等优点,因而特别适合在嵌入式系统中用做web服务器n]。从网上下载其源代码Boa—o.94.13.tar.gz,其在本系统上的移植主要包括2个部分:src下的文件修改和config文件修改。
boa—o.94.13/src文件的修改:首先设置boa—o.94/Makefile文件中的编译器变量:CC=/arm一1inux-gcc,CPP一/arnl_linux—gcc_E;并修改编译方式:LDFLAGS=一g—static。然后在文件compat.h中找到宏定义#defineTIMEz0NELOFFSET(foo)foo##一>tm—gmtoff并修改为#define TIMEZONE一0FFSET(foo)f00->tm—gmtoff。接着便可在boa—o.94/src/下执行make进行编译,从而得到的可执行程序为boa,使用串口将其下载到目标机上,完成移植。
boa—O。94/boa.conf文件的修改,由于boa必须以root身份启动,所以将User nobody修改为User mot,Groupnogroup修改为Group r00t,即赋予管理员权限;修改服务器名字,即将ServerName www.your.org.here修改为serverName sm2440;修改DocumentRoot/var/www为
DocumentRoot/home/web,即设置HTML文档的主目录为/home/web;最后指明nime.types文件位置为Mime—Types/etc/milne.types;其他采用默认设置即可。最后将boa-0.94/boa.conf拷贝到/etc/boa/目录下,配置好Web服务器,就可以进行远程访问了。
4 实现客户端视频数据接收应用程序
本系统的web客户端采用Java Applet为用户提供一个管理人口和显示界面,Java Applet程序嵌入于HTML文档并能在标准的浏览器中显示运行,这种方式不用专门的开发软件与网络接口,是基于web网络应用程序的理想选择。本系统需要在显示页面中嵌入播放器程序实时播放前端获取的监控视频。其中视频数据接收是客户端软件设计的关键,其实现如下:
首先建立网络通信,即创建套接字,输入输出流。然后分配接收缓冲区,即:byte[]buffer—new byte[5 12*1024];
之后读取图像的头信息,并确认图像数据的正确性,即:int n=in.r∞d(bu“er,O,HDRLEN);
其中HDRLEN为信息头长度,设置为50 B大小,通过对头信息中包含的约定字符进行判断,以确定是进一步接收图像数据,还是重新接收头信息。如果能正确读取图像头信息,就证明此次接收的视频数据流是正确的,接着就可以把头信息后的图像数据写入缓冲区,供播放显示:
n=HDRLEN;
r—in.read(buffer,n,buffer.1ength-n);由于视频流缓冲区内接收的幅静态图像数据包含了图像头信息,因此需要将图像数据拷贝到另一缓冲区内,以获得单独的图像数据:
byte[]buffeLimage=new byte[n];.
for(int i一0;in;i++)
buffer.image[i]=buffer[i+HDRLEN]I
接着从缓冲区buffer-image中读人数据:
BufferedImage imagedata=
Imagel0.read(new ByteArrayInputStream(buffer—image)),
ImageIcon image—icon=new Image Icon(imageedate m-label.set Icon(image—icon),
系统通过循环,实现不断读取,显示图像数据,用户便可从主页面上获取前端采集到的实时视频监控数据,画面流畅,无明显延时和画面停滞现象,达到监控目的。
5 结束语
目前,嵌入式产品方兴未艾口”。本文提出的这套嵌入式视频监控系统设计方案,采用性价比很高的ARM处理器与开源操作系统Linux相结合,具有高稳定性、低成本、低功耗等诸多优点,并且基于B/S模式,直接接入以太网,大量节省电缆开销,即插即用,实现跨平台监控,为用户提供了极大便利。本系统很好地体现了智能化、集成化、网络化、跨平台等优点,可广泛用于智能家居、智能交通、工厂等制造单位及需实时监控场所。
评论