內容摘要:
MJPG-streamer是一個輕量級的視頻服務器軟件,一個可以從單一輸入組件獲取圖像並傳輸到多個輸出組件的命令行應用程序,可應用在基於IP協議的網絡中,從網絡攝像頭中獲取並傳輸JPEG格式的圖像到瀏覽器,甚至是一個運行了TCPMP播放器的Windows移動設備。該工具源碼簡潔,注釋清晰,使用Linux C語言進行開發,可移植到不同的計算機平台。
准備階段:
主機環境: Ubuntu11.10
目標機: 飛凌-Ok6410-A
目標機系統:linux2.6.36
編譯環境: arm-linux-gcc-4.3.2
USB攝像頭:中星微-zc301p
MJPG-stream的移植需要jpeg庫,所以必須先移植jpeg庫
源碼下載:jpeg源碼包:http://www.ijg.org/files/jpegsrc.v8b.tar.gz
MJPG-stream源碼包: http://sourceforge.net/projects/mjpg-streamer/
移植步驟:
1.jpeg庫移植
(1)解壓jpeg源碼包
$tar xvf jpegsrc.v8b.tar.gz
(2)配置源碼
$ ./configure --prefix=/lxm/jpeg --host=arm-linux-gcc
上面的/lxm/jpeg為自己建的目錄,視自己情況而定,編譯器也是。
(3)編譯
$make
(4)安裝
$make install
(5)復制庫文件到文件系統中
$cp /lxm/jpeg/lib/libjpeg.so.8 /source/rootfs/lib
2.MJPG-stream的移植
(1)解壓源碼
$tar xvf mjpg-streamer-r63.tar.gz
(2)修改源碼
$cd mjpg-streamer-r63
修改頂層makefile及plugins目錄中的各級makefile將所有
CC=gcc修改為CC=arm-linux-gcc
修改plugins/input_uvc/Makfile
修改
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared –fPIC
為
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/lxm/jpeg/include
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
為
$(CC) $(CFLAGS) -ljpeg -L/lxm/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
(3)編譯
$make
(4)復制相關庫文件到開發板
$mkdir /source/rootfs/mjpg $cp *.so /source/rootfs/mjpg $cp mjpg-stream /source/rootfs/bin
(5)測試
打開開發板運行
mjpg_streamer -i "/mjpg/input_uvc.so -d /dev/video0" -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)可以實現一些其他相關功能。
做這個移植主要是測試自己買的中新微的USB攝像頭對於Linux2.6.36是否支持,現在成功顯示,說明該Linux2.6.36支持中星微zc301p的攝像頭。
參考文章: