3.2.2 动态网页的设计
嵌入式Web服务器是Web服务器简化后的专用系统。本系统选用适合嵌入式系统的Boa Web服务器。Boa是一个单任务的HTTP服务器,支持能够实现动态Web技术的Java
Script技术,源代码开放,性能高。同时服务器本身所占空间很小,因而十分适用于嵌入式系统。
鉴于Boa移植技术已经很成熟,故不详细讨论。
Applet是能够嵌入到一个HTML页面中,且可通过Web浏览器下载和执行的一种Java类。它是Java技术容器(container)的一种特定类型。Applet可以通过网络传输,由浏览器自动装载并执行。这恰恰非常符合本系统的要求,因此选用Applet来很好地实现动态网页,打开网页就可以看到视频数据,方便快捷。
(1)设计流程
Applet不能单独运行,需要嵌入在网页中借助浏览器的解释。必须要创建一个HTML文件来告诉浏览器需装载什么以及如何运行它。其执行顺序如下:
①浏览器装入URL;
②浏览器装入HTML文档;
③浏览器装入Applet类;
④浏览器运行Applet。
本系统Java Applet实现三个功能:视频数据通过Socket传送到客户端显示;将客户端调节视频带参数发送到服务器;将客户端点击的运动控制参数发送到服务器。其中init和start函数在Applet开始执行时调用,通过start创建2个线程:用于socket通信;提供用户界面显示视频和相应用户操作。用户界面设计用到Sun的SwingWorker类库。
(2)双缓冲技术
双缓冲技术主要应用于屏幕闪烁现象的消除。在一帧图像的绘制过程中,如果一帧图像的绘制时间大于屏幕的刷新时间,就会造成视觉上不连贯的效果。绘制时可在内存中建立两个图形缓冲区,其中一个缓冲区(前台)用于存放显示的当前帧,并在屏幕上显示;同时在另一个缓冲区中完成下一帧的绘制。因为画面的绘制过程是在用户不可见的情况下进行,自然也就消除了这种闪烁现象。
为了保证用户的观看质量,本系统在动态网页的设计中引入这种双缓冲技术。采用Java语言中component类的一个可用于创建图形缓冲区的方法createImage(int width,int height),其参数为绘制区域的大小。该方法返回一个大小为绘制区域的Image对象。调用该对象的getGraphics()方法得到一个GraphiCS对象,将它视为后台的Graphics对象。此后,可调用Graplaics类的各种绘图方法,以绘制所需的画面。此时,所有的操作都是在后台的Image对象中进行的,并没有显示到屏幕上。当绘制完成后,再调用前台Graphics对象的drawlmage(Image img,int x,int y,ImageObserver observer)方法将已准备好的Image显示到屏幕上。其中Image参数就是createImage方法所返回后台的Image对象,ImageObserver参数是与前台Graphics对象相关的Component对象或其派生类对象。
4 系统测试
在PXA270上搭建Boa,将Java Applet小程序编译后生成的.class执行文件、HTML脚本index.html及相关文件拷贝到/var/www/下。将编译好的流媒体服务器的二进制文件下载到PXA270上。加载摄像头和USB无线网卡驱动,运行boa,再运行流媒体服务器。在PC端打开浏览器输入pxa270的IP地址,就可以看到网页监控的画面,画面清晰且视频流畅,如图4所示。

5 结 语
本文充分利用多媒体技术和嵌入式技术各自的特点,介绍了一种用ARM实现移动视频监控的方法,给出了软硬件设计结构及USB无线网卡驱动的具体实现过程。设计了流媒体服务器,搭建了Boa作为Web服务器及实现了动态网页。利用USB无线网卡免去了布线的烦恼;利用B/S结构使得可以通过浏览器来监控,实现跨平台监视;利用双缓冲技术,实现较高的视频质量。基于ARM的移动视频监控系统使得操作简单,携带方便,可靠性高,成本低,具有良好的开发及应用前景。