基于servfox和spcaview的嵌入式视频监控系统

时间:2021-09-24 20:24:22


我的环境
PC:操作系统用的VM下的RedHat9,内核是2.6.15,交叉编译器是3.4.1
开发板硬件:天嵌的板子,CPU是s3c2440
开发板软件:bootloader是自己移植的u-boot,内核是自己移植的2.6.15
先说一下总体思路,
1、移植摄像头驱动
2、移植服务器端程序
3、编译客户端程序


1、移植摄像头驱动

摄像头我用的是中芯微ZC301的。驱动可以从网上下载,我是在嵌入式开发联盟上下的。驱动的加载有两种方式,一种是将驱动编译进内核;另一种是以模块的形式加载。第一种方式会增加内核的空间,而且一旦驱动加载后就无法卸载。所以建议使用第二种方式。通过inmod方式加载即可。

2、移植服务器端程序
服务器端程序我用的是servfox,从这里下载
http://mxhaard.free.fr/spca50x/e ... rvfox-R1_1_3.tar.gz
下载,解压,进入其目录,观察之,发现没有makefile,但有一个makefile.arm,还有一个makefile.386,于是将makefile.arm改名为makefile,然后输入命令
make
编译正常,没有出错,网上还有另外一种方式不修改makefile.arm而直接用之的方式,不过我忘了,大家可以上网搜搜。

将可执行文件servfox复制到nfs共享目录,在开发板上插上中芯微的ZC301摄像头再启动开发板,挂载nfs服务器,运行servfox,出错,提示为找到到该命令,老问题,以前遇到过类似问题,原因是该命令为动态链接,而开发板上没有相关的库文件,所以无法运行,需要静态链接。
回到PC,打开makefile,将所有用到arm-linux-gcc的地方,都加上一个参数-static,其实就三个地方。
然后重新编译,在开发板上运行,输入命令:
./servfox -d /dev/video0 -g -s 320x240 -w 7070

注意:一定要加-g这个参数,否则会出现SDL依赖之类的错误。


程序运行了,提示为
servfox version: 1.1.3 date: 11:12:2005 (C) mxhaard@magic.fr
Waiting .... for connection. CTrl_c to stop !!!!


3、编译客户端程序
客户端程序使用的是spcaview,下载地址为:
http://mxhaard.free.fr/spca50x/Download/spcaview-20061208.tar.gz
这个程序是在PC上运行的,解压后,直接编译就行,
make
生成可执行文件spcaview,运行之
./spcaview -g -s 320x240 -w 192.168.141.236:7070
就能看到图像了,也可指定分辨率为640x480,但是不如320x240流畅。


下一步讲讲如何在浏览器里直接看到图像。

前提条件:你得在开发板上安装好boa服务器,其它服务器也行。

在主机上,进入spcaview安装的目录下,是不是看到有个目录叫做http-java-applet呢,对了就是它.
我们需要把它拷贝到boa的主目录下,也就是你的DocumentRoot 的目录下,但是在做这个工作之前我们需要把这个目录的权限修改一下,chmod -R 755 /home/spcaview/http-java-applet(之前我就是没做这一步导致applet程序不能运行)这时把这个文件夹整个拷贝到boa的主目录下,然后启动boa服务器。然后再重新启动servfox,进web浏览器,输入
http://192.168.141.236/http-java-applet/index-sample.html
,便可以看到了

 

 

上个图给大家看看,这是用摄像头拍的。

 

以上驱动和servfox、spcaview的代码找不到的话可以发邮件到

pangheming@live.cn

向我索取。