分类: LINUX
2009-04-06 16:22:46
使用servfox 和spcaview架设嵌入式Linux视频服务器。
网上有很多这样的文章,我写这篇文章,主要是记录我学习的点点滴滴,作为以后进一步学习好参考之用,也分享给广大同行朋友们。
源码下载:上网站中,有相关的源码。本移植过程中需要包含的源码包:
Servfox
|
SDL-
|
spcaview
|
1. 移植摄像头驱动,在我的另外一篇文章《USB摄像头(基于中星微zc301)驱动程序的移植》的文章里详细的介绍了移植方法。这里不再赘述。
2. 移植servfox。其实spcaview也可以,即可以做采集端,也可以做接收端。但是移植起来没有servfox简单,所以采集数据端选用servfox。修改Makefile文件为,
CC=arm-linux-gcc
SERVFLAGS= -O2 -DLINUX $(WARNINGS) –I/home/yuaf/linux-
然后make一下,在当前文件夹下就可以看到生成的可执行文件 servfox,把此可执行文件拷贝到网络文件系统下 /home/yuaf/root_nfs/bin
在开发板中运行 servfox –d /dev/video0 –s 320x240 –w 7070,就可以看到如下的提示信息:
servfox version:
Waiting .... for connection. CTrl_c to stop !!!!
说明servfox已成功运行起来了。
3. Linux上编译spcaview.由于此软件包依赖与libsdl,所以在安装spcaview之前,必须要 安
装 SDL-
解压源码包: tar zxvf SDL-
安装源码包: cd SDL-
安装spcaview软件:
tar zxvf spcaview-20061208;cd spcaview-20061208;make
ok啦,在源文件目录上,可以看到三个可执行文件,spcacat spcaserv spcaview
spcacat 简单图片的抓取工具,不能用于网络监视客户端。
Spcaserv shi 流媒体服务器,
Spcaview 工具是用来纪录数据流,也能用来播放数据,也能作为网络监视客户端用。
我们可以在Linux上运行: ./spcaview –g –s 320x240 –w 192.168.0.100:7070
其中192.168.0.100是服务器的IP地址,这样我们就可以在PC机上看见USB摄像头采集进来的数据了。
4. 移植Web服务器,我们选用的是boa服务器,在我的另外一遍文章中有介绍《boa在嵌入式Linux上的移植》有详细的介绍,这里不再叙述。
5. 接着就是通过web浏览器浏览摄像头采集进来的数据了。在上面的spcaview目录中,有一个目录 http-java-applet。把此目录放到web服务器的Documentroot目录下,注意要设置此文件的权限。
6.安装JRE,以让浏览器支持JAVA程序。若在Linux下可以参照:
,对此有比较详细的介绍。若在ubuntu下,比较省事的做法是:sudo apt-get install sun-java6-jdk. Sudo apt-get install sun-java6-jre
若在windows下,可以在网上下载支持windows的jre的exe文件。
7. 安装完之后,呵呵,就可以在windows的浏览器下输入:
激动人心的时刻到来了。就可以看到摄像头采集进来的数据了。
总结:在整个移植的过程中也不是一帆风顺的。在最开始移植serforx的时候,运行serforx,出现 invalid …..什么玩意的。这种情况是没有找到相应的库文件。还有就是在添加了相应的库文件之后,之后出现
ervfox: /lib/libpthread.so.0: version `GLIBC_2.1' not found (required by servfox)
servfox: /lib/libpthread.so.0: version `GLIBC_2.0' not found (required by servfox)
servfox: /lib/libc.so.6: version `GLIBC_PRIVATE' not found (required by /lib/libpthread.so.0)
servfox: /lib/libc.so.6: version `GLIBC_2.4' not found (required by /lib/libpthread.so.0)
查看lib目录下,发现有相关的文件啊,这说明是编译器的版本不一致导致的。我就是换一个低一点的版本编译就不会出现这样的问题了。在windows下输入服务器网址,看摄像头采集进来的图像,最开始始终没有,第一天捣鼓了一阵,就没整了,比较郁闷。今天我在sun java 控制台乱整了一下,输入网址,意想不到的事发生了。浏览器可以看见图像了。而且延时时间还比较小。在整个过程中收获还是蛮大的。
chinaunix网友2009-04-19 13:17:43
你用的是虚拟机redhat9.0,2.4内核的,那估计你的开发板的系统也是2.4内核的,我想应该是你的编译器的问题。你的编译器是3.4.1版本的,这个版本是编译2.6内核的。你用2.95.3编译器交叉编译吧。编译器版本是很重要的,这些在编译的时候要考虑的。可执行文件是否可以改名字,你可以在你的主机里写个程序验证一下,生成可执行文件,再改名字试试看,我想应该是可以的。若不放心的话,可以修改Makefile文件里目标文件的命名就行了。我上面给你说了,spcaview是客户端,你的服务器端没有运行,肯定是连接不到的。估计你的摄像头驱动是没有问题,不过你可以验证一下,验证方法在我的USB驱动里面有介绍。若你本身开发板带的这些功能,你可以照着说明书一步一步做就行。纠正一点的是cgi不是文件,cgi是一种接口,可以实现用户和服务器信息的交互。boa就是一个服务器,移植在开发板里的。它支持cgi,http-java-applet是把采集进来的摄像头数据进行传输给客户端的(浏览器),实现流媒体传输的。要在客户端实现观看图像,你在windows端还得安装支持java环境。
chinaunix网友2009-04-19 10:58:31
补充一下,这个友善之臂mini2440安装的这个缺省的linux本身是可以实现远程监控这个功能的,就是在它提供的web测试页下,可以浏览摄像头采集的图片,我就是想研究它是怎么实现的???到目前为止,我只知道它的www目录里有和spcaview目录中http-java-applet类似的东西,然后通过好像是cgi文件来实现,我也不太了解,因为我现在实在是很着急(我的毕业论文搞这个),所以请你帮帮忙了,我的邮箱是chenjing616@126.com,不介意的话能给我发个邮件吗,我想传些资料给你,谢谢
chinaunix网友2009-04-19 10:48:30
首先谢谢你的帮忙。但是我的问题还是没有解决,可能是我的问题啦。呵呵。我的系统是虚拟机redhat9.0,加上友善之臂的mini2440开发板,我刚接触这些东西,所以有时候会犯弱智的错误。我在开发板上安装了开发板光盘提供的缺省的linux系统,我发现它里面就有了例如boa,spcacat,servfox, 这些命令,所以我在想我再在开发板上安装servfox会不会有影响?按照你的建议,我运行servfox12(我把名字改了,可执行文件可以改的吧?因为我怕和系统原本就有的servfox冲突了,也许很可笑,麻烦你指点一下),我ps查看进程,发现比运行前多了一个[rpciiod/0],我也不知道什么东西,也不知道servfox12运行了没,但是我交叉编译(版本3.4.1)的就是没出错啊,可是我spcaview还是connect failed abort,还有我的USB摄像头的驱动应该加载了,因为我插入摄像头时,它会出现插入提示,ls /dev/v4l/video0会出现/dev/v4l/video0, ls /dev 时,发现它下面还有个video0设备节点,而v4l这个要在插入摄像头后才会
chinaunix网友2009-04-17 17:44:19
我不知道你用的什么系统,你安装的时候有些是要求更用户权限的。你不妨重新安装看看,注意安装的过程中出现的一些信息。交叉编译也要注意安装的路径问题,运行servfox的还有一个前提是你的USB摄像头的驱动是否加载,还有你的设备节点是否建立,这些都检查检查等
chinaunix网友2009-04-17 17:38:16
首先,你要明确一点的是servfox是作为服务器端,spcaview作为客户端,你的服务器没有运行起来,你的spcaview作为客户端怎么去访问呢,所以就出现你的connect failed abort的问题,最起码你也可以通过在开发板上看看系统监听的端口,因为你的服务器端没有运行起来,所以你的7070端口也没有打开,所以会连接失败。至于你的servfox的错误问题,你运行之后,可以查看一下系统的进程,看是否运行。我猜想是你在交叉编译servfox的时候,看看编译servfox的过程中有没有什么警告之类的,还有特别注意编译器的版本问题,至于你的SDL-1.2.13,不妨你安装试试看,我在安装的时候,若没有安装它,会出现错误的。