EDN China > 技术文章 > 嵌入式系统 > 操作系统 > 正文
? 2016博客大赛-不限主题,寻找电子导师,大奖升级??

深入研究嵌入式web服务器视频监控的应用

2011年12月27日 ?? 收藏0
1.引言

后PC机时代的到来引发了信息产品的产生,而Internet与信息产品的结合是当今发展的一个趋势,嵌入式Internet技术的产生正好迎合了这个趋势。据分析,嵌入式Internet系统在Internet电话、游戏装置和手持式通信装置的推动下将会有突飞猛进的发展。由于Internet技术的渗透,嵌入式系统正变得越来越智能化并具有越来越多的网络友好特性;又由于Web技术的飞速发展,给嵌入式系统带入Internet提供了绝佳的途径。

嵌入式web技术是视频监控系统设计应用最广泛的技术之一。本文根据监控系统对敖据吞吐量和安全可靠性等各方面的实际要求,结合相关研究的新进展,深入讨论了web服务器在监控系统设计中的应用技巧,并详细做了实现上的阐述。对所有基于嵌入式web技术的监控系统的设计具有非常实际的指导作用。

把图像采集、视频压缩和WEB功能集中到一个体积很小的设备内,可以直接连入局域网和Internet,达到即插即用,省掉多种复杂的电缆,安装方便,用户也无须安装任何硬件设备即可观看,这使得由嵌入式网络视频监控服务器组成的监控网络组网和扩展都极为灵活方便。

2.WEB服务器所在系统工作原理

如图1所示,系统有两种网络接入方式:通过PPPOE自动拨号,动态获取IP联入Internet;自定义静态IP连入局域网。

系统软件结构流程图

之后,系统的整个工作流程包括两条主线:

1.通过HTTP/TCP/IP方式,解析来自监控端的网页请求,包括:摄像机控制(云台上下左右、镜头光圈、缩放等等),数据库读写(视频参数如分辨率、亮色度、码流,画质),视频调度与传输(多个用户之间视频数据的发送停止及其相互协调,系统参数也放在这里)。

2.通过RTP/UDP/IP方式,为监控端提供所需的实时视频信息。RTP/UDP/IP的方式兼顾了视频传输的实时性与QoS保证。

3.WEB服务器的选择

根据工作原理的描述,WEB服务器处于整个系统核心的位置,需要解决的几个难点包括:

1.安全性。只有授权登陆用户才能进行系统配置(网络参数、视频特性等等)。普通用户只能简单监控。

2.流量控制。视频数据连续且大量,服务器应该具备一定的协调各路监控数据的能力。

3.实时性。对于监控端的web请求指令响应速度,特别是在高负荷的情况下。

4.性能。在多路监控请求同时存在的情况下,系统的响应速度。

5.支持串口命令。云台控制指令需要串口支持。

6.数据库交互。包括用户数据库,系统配置参数等等,都需要实现脱机保存。

综上所述,Thttpd在安全性、性能、流量控制等方面有效的满足系统需要,当然,实时性也得到很好的保证。下面,结合源码,首先实现Thttpd的基本功能,然后将视频数据转发、安全性、支持串口命令、数据库交互的实现完善起来。

4.Thttpd基本功能的实现

首先,确保在编译uCLinux内核的makemenucONfig这一步,选中busybox中的Thttpd。

然后,根据需要,修改源码/user/thttpd下的config.h:

#defineDEFAULT_PORT80

//服务器监听端口

#defineDEFAULT_DIR/home/httpd

//设定服务器根目录

#defineINDEX_nameindex.html

//设定访问服务器时的默认主页

#defineAUTH_FILEpasswd

//授权用户数据库文件

#defineCGI_PATTERN/cgi-bin/*.cgi

//CGI的文件名格式

#defineCGI_PATH/home/httpd/cgi-bin

//CGI的所在目录

接下来,建立服务器根目录和文件目录:

由于uCLinux的根文件系统为ROMFS,只读,因此要在生成文件系统映像之前建立好其中的目录和文件。首先是Web服务器根目录,再是根目录下的子目录:文件根目录和CGI程序目录。修改/vendor/Samsung/4510B/makefile文件,在ROMFS_DIRS列出的目录中增加home/httpd(服务器根目录和文件根目录),home/httpd/cgi-bin(CGI程序目录)。

最后,将监控系统相关的网页和CGI程序分别放在/vendor/Generic/httpd和/vendor/Generic/httpd/cgi-bin中,就可以随内核编译过程时自动复制到image的相关目录下。在/vendor/Samsung/4510B/rc中添加thttpd实现上电自动执行。

5.HTTP基本验证(RFC2617)的实现

首先必须生成存放用户及其密码的数据库文件:

由于Thttpd在http验证的实现上基于b64_decode_table解密,因此需要提供相对应b64加密而成的数据库文件。然后,编译/user/htpasswd.c,切换到相应目录下,

执行。/htpasswd-cpasswdroot

Addingpasswordforroot.

Newpassword:

Re-typenewpassword:

其中,-c表示创建一个名字为passwd的新的用户数据加密文件,同时第一个用户名为root。

之后,将passwd文件复制到/vendor/Generic/httpd下面,并且注意在thttpd/config.h中define的AUTH_FILE与passwd同名。至此,thttpd的http验证功能就顺利添加完成。


上一页12下一页
?? ?? ??


打开微信“扫一扫”,打开网页后点击屏幕右上角分享按钮

1.扫描左侧二维码
2.点击右上角的分享按钮
3.选择分享给朋友
?? ??

嵌入式? 服务器? 视频监控?

相关文章

我来评论
美国的游客
美国的游客 ??? (您将以游客身份发表,请登录 | 注册)
?
有问题请反馈