×
嵌入式开发 > 详情

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

发布时间:2020-06-29 发布时间:
|

1.引言

l

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

#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验证功能就顺利添加完成。

6.视频调度与传输

在本系统中,模拟视频数据经过AD,采样等预处理进入支持MPEG4编码的ASIC芯片压缩后,打包发送的任务由Thttpd完成。

在多个监控端请求同时存在的情况下,指令响应本身Thttpd已经完成,所以我们只需要实现数据传输。

在main函数里Mainloop开始之前依次执行get_device,driver_init,device_init和alloc_resource,interrupt_enable,device_start,视频流的编码压缩就开始了。添加定时器响应函数,(void)tmr_create((structtimeval*)0,transfer_bitstream,(ClientData)mpeg4_fd,0,1);

其中mpeg4_fd,是编码芯片的设备描述符,transfer_bitstream为响应函数(内容略)。

然后,根据Thttpd连接请求的变化,在handle_read与handle_send中添加简单相应连接有效性判断的代码即可完成数据调度与传输的功能。

7.串口命令支持

云台控制指令的发送需要RS485的支持。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
一只老鸟的嵌入式ARM学习心得