攝像頭驅動gspcav+視頻服務器servfox+客戶端spcaview的移植

1. 【移植攝像頭驅動】編譯和加載gspcav。
步驟一:修改Makefile文件
KERNELDIR := /lib/modules/$(KERNEL_VERSION)/build
修改爲如下(注意KERNELDIR應該爲linux-2.6.22.6內核所在目錄):
KERNELDIR := /source/kernel/linux-2.6.22.6
CROSS_COMPILE = arm-softfloat-linux-gnu-
CC = arm-softfloat-linux-gnu-gcc
步驟二:make 後即可看到該目錄下有一個gspca.ko的文件了。拷貝到網絡文件系統/source/rootfs中insmod gspca.ko即可。
步驟三:在/etc/init.d/rcS中加上/sbin/insmod  /app/app_driver/gspca.ko    即可,設備節點由於系統安裝了udev可以自動創建。

2.【移植servfox】其實spcaview也可以做採集端。但是移植起來沒有servfox簡單,所以採集數據端選用servfox。
步驟一:修改Makefile文件爲。
CC=arm-linux-gcc
SERVFLAGS= -O2 -DLINUX $(WARNINGS) –I/home/yuaf/linux-2.6.15/include

步驟二:make,在當前文件夾下就可以看到生成的可執行文件servfox,把此可執行文件拷貝到網絡文件系統/source/rootfs/bin

步驟三:在開發板中運行  servfox –d /dev/video0 –s 320x240 –w 7070 就可以看到如下的提示信息:

servfox version: 1.1.2 date: 07:10:2005 (C) [email protected]

Waiting .... for connection. CTrl_c to stop !!!!

說明servfox已成功運行起來了。

3.【Linux上編譯spcaview】由於此軟件包依賴與libsdl,所以在安裝spcaview之前,必須要安裝 SDL-1.2.13
步驟一:解壓源碼包:  tar zxvf SDL-1.2.13.tar.gz
步驟二:安裝源碼包:  cd SDL-1.2.13,運行 ./configure ,編譯文件 make,安裝文件 make install。在安裝的過程中,注意安裝的路徑,可以通過查看配置文件獲得安裝路徑或者修改路徑。
步驟三:安裝spcaview軟件:tar zxvf spcaview-20061208,cd spcaview-20061208,make,在源文件目錄上,可看到三個可執行文件,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服務器搭建過程.txt”。

5.【通過web瀏覽器瀏覽攝像頭採集進來的數據】在上面的spcaview目錄中,有一個目錄 http-java-applet。把此目錄放到web服務器的根目錄下,注意要設置此文件的權限。

6.【安裝JRE】,以讓瀏覽器支持JAVA程序。若在Linux下可以參照:

   http://www.linuxsir.org/main/?q=node/59,對此有比較詳細的介紹。若在ubuntu下,比較省事的做法是:sudo apt-get install sun-java6-jdk. Sudo apt-get install sun-java6-jre

   若在windows下,可以在網上下載支持windows的jre的exe文件。

7.【查看效果】 安裝完之後,就可以在windows的瀏覽器下輸入:

http://192.168.0.100/http-java-applet/index.html

激動人心的時刻到來了。就可以看到攝像頭採集進來的數據了。

總結:在整個移植的過程中也不是一帆風順的。在最開始移植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 控制檯亂整了一下,輸入網址,意想不到的事發生了。瀏覽器可以看見圖像了。而且延時時間還比較小。在整個過程中收穫還是蠻大的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章