2440+zc301攝像頭 無線網絡視頻監控系統

一、環境

        交叉工具鏈 :arm-linux-gcc-4.1.2
        攝像頭 :ZC301

二、移植過程

1、配置內核是內核支持芯片爲ZC301的攝像頭
        Make menuconfig
                Device Drivers ---> 
                        <*> Multimedia support --->
                                <*> Video For Linux 
                                [*] Enable Video For Linux API 1 (DEPRECATED) (NEW)
                                [*] Video capture adapters (NEW) --->
                                        [*] V4L USB devices (NEW) ---> 
                                                <*> USB Video Class (UVC) 
                                                [*] UVC input events device support (NEW)
                                        <*> USB ZC0301[P] webcam support (DEPRECATED)

2、重新編譯內核

make zImage

通過上面兩個步驟就可以驅動我們的攝像頭了。但是這個驅動是基於V4l2的。以前基於V4L的一些上層應用就不能用了,或需要做大量的修改!這裏我們要實現網絡視頻的功能,以前都是用servfox這個網絡視頻服務器,但是這個服務器就是基於V4L的,我們如果想用的話就得對servfox的源碼進行修改。這裏我們選用另外一種方案mjpg-stream。

3、mjpg-stream的移植

關於mjpg-stream的資料大家可以在下面這個網址查看:

http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page 
        mjpg-stream的移植需要jpeg的庫,所以我們先移植jpeg的庫

(1)jpeg庫的移植

        1)jpeg源碼包工具鏈:4.1.2
1)解壓
#cp /mnt/hgfs/share/geclab/jpegsrc.v6b.tar.gz /root/build_rootfs
#tar jxvz jpegsrc.v6b.tar.gz
#cd jpeg-6b
2)配置
#./configure -enable-shared -enable-static -prefix=/usr/local/arm/4.1.2/arm-linux
-build=i386 -host=arm
3)修改Makefile
CC=gcc 改爲CC=arm-linux-gcc
AR=arrc 改爲AR=arm-linux-arrc
AR2=randlib 改爲AR2=arm-linux-randlib
4)編譯與安裝
#make
#makeinstall-lib              

cp /usr/local/arm/4.1.2/arm-linux-build=i386/lib/libjpeg* /source/rootfs/lib


(2)mjpg-stream的移植

        1)mjpg-stream源碼包            

                2)解壓源碼
                tar xvf mjpg-streamer-r63.tar.gz
                3)修改源碼
                cd mjpg-streamer-r63
                修改頂層makefile及plugins目錄中的各級makefile將所有
                CC=gcc
                修改爲
                CC=arm-none-linux-gnueabi-gcc

        修改plugins/input_uvc/Makfile
                修改
                CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
                爲
                CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/s3c2410-2.6.35/video/jpeg/include
                修改
                $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
                爲
                $(CC) $(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

         jpeg_utils.c:27: fatal error: jpeglib.h: No such file or directory
                4)編譯
                make
                5)測試
                mkdir /source/rootfs/mjpg
                cp *.so /source/rootfs/mjpg
                cp mjpg-stream /source/rootfs/bin

        打開開開發板運行
                mjpg_streamer -i "/mjpg/input_uvc.so" -o "/mjpg/output_http.so -w /www"
                在源碼目錄下有start.sh,這個腳本里有一些mjpg-stream的使用方法及說明

        打開一個網頁輸入下面地址就能夠看到一個視頻(開發板的IP爲192.168.1.202):
                http://192.168.1.202:8080/?action=stream 
                打開一個網頁輸入下面地址就能夠看到一個靜態圖片:
                http://192.168.1.202:8080/?action=snapshot 
                6)在mjpg源碼下有一個www的目錄,這個一個網絡使用mjpg的實例,結合web服務器(boa)可以實現一些其他相關功能。

如果出現以下問題:

 

 

wKiom1VOrgPxCG0qAAO45oivdsY059.jpg

 

說明缺少libjpeg.so.62 去/usr/local/arm/4.1.2/arm-linux-build=i386/lib/拷貝庫文件到文件系統的lib下

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