arm开发板6410/2440上mjpg-streamer网络视频服务器移植
?攝像頭移植
一、環境
主機環境?:ubuntu?10.10?????????目標板?:FS-S5PC100
?主機工具鏈?:gcc-4.4.5?????????交叉工具鏈?:arm-unknown-linux-gnueabi-gcc
??攝像頭?:ZC301
注意事項:
自己制作文件系時,需要將交叉編譯工具鏈中的庫文件拷貝到文件系統中。
2??調試時使用nfs掛載,調試完成后,將zImage和yaffs文件系統(yaffs可讀寫)燒入開發板。
二、移植過程
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
3、mjpg-streamer的移植
關于mjpg-streamer的資料可以在下面這個網址查看:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page
mjpg-streamer的移植需要jpeg的庫,所以我們先移植jpeg的庫
(1)jpeg庫的移植
?1)jpeg源碼包通過下面這個網址下載??????????http://download.csdn.net/detail/colwer/4531343?
?2)解壓源碼包在/home/linux/?目錄下解壓:????????????tar?xvf?jpegsrc.v8b.tar.gz
?3)配置源碼,在/home/linux/目錄下創建jpeg目錄mkdir?jpeg
????????????????cd??jpeg-8b
???????????執行????./configure??--prefix=/home/linux/jpeg??--host=arm-unknwn-linux-gnueabi
??4)編譯???????????????make
??5)安裝???????????????make?install
??6)拷貝庫到文件系統中????????cp??/home/linux/jpeg/lib/libjpeg.so.8???/source/rootfs/lib
(2)mjpg-streamer的移植
???????? 1)mjpg-stream源碼包通過下面這個網址下載??http://download.csdn.net/detail/colwer/4531434????????
???????? 2)解壓源碼????????????????tar?xvf?mjpg-streamer-r63.tar.gz
?????????3)修改源碼????????????????cd?mjpg-streamer-r63
????????????????修改頂層makefile及plugins目錄中的各級makefile,將所有
????????????????CC=gcc
????????????????修改為???????????????CC=arm-unknown-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/jpeg/include
????????????????修改
????????????????$(CC)?$(CFLAGS)?-ljpeg?-o?$@?input_uvc.c?v4l2uvc.lo?jpeg_utils.lo?dynctrl.lo
????????????????為
????????????????$(CC)?$(CFLAGS)?-ljpeg?-L/home/linux/jpeg/lib?-o?$@?input_uvc.c?v4l2uvc.lo?jpeg_utils.lo?dynctrl.lo
???????4)編譯????????????????make
???????5)將mjpeg可執行文件拷貝到文件系統的/bin目錄下???cp?mjpg-streamer??/source/rootfs/bin
在文件系統中創建mjpg目錄,將所有的動態庫拷貝到該目錄下
??????????????mkdir?/source/rootfs/mjpg
????????????????cp?*.so?/source/rootfs/mjpg??{6個so文件}
將mjpeg_streamer-r63目錄下的/www目錄拷貝到文件系統中
cp??/www/?-a???/source/rootfs/??-rf
4?運行
在WINDOWS下?運行viewer.exe或運行解壓文件中的www目錄下的所有文件復制到你當前的BOA服務器指定的目錄下。
同時要將www目錄下的cambozla.jar?bodybg.gif?,favicon.ico,??favicon.png,??sidebarbg.gif拷貝到你的BOA服務器下。
打開開開發板將boa服務器運行起來
????./etc/boa/boa?&
輸入下面一行命令:
./bin/mjpg_streamer??-i??"/mjpg/input_uvc.so?-d?/dev/video0"??-o??"/mjpg/output_http.so?-w??/www/??"
?在linux系統的瀏覽器中,輸入如下地址:??
?http://192.168.1.200:8080
顯示界面如下圖所示:
???????????
?
?
5?拍照功能的實現
由于mjpg_stream中output-file.so能實現連續拍照的功能,不能實現單拍或連拍幾張的功能所以需要對output_file原碼進行修改。
#??cd?mjpg-streamer-rc63/plugins/output_file
#??vim?output_file.c
在96行?函數?void?*worker_thread(void?*arg)?體中加入以下代碼:
char?buf[10];???//
int?flags?=?0;???//拍照標志,1:表示11張照片,2:表示1張照片
int?fd_com?=?0;?//打開管道的文件描述符
?
???stop_num?=?0;?//拍照計數
??if?(?access(“/tmp/webcom”,F_OK)?<?0?)????//創建有名管道用于接收拍照命令
{
???if?(?mkfifo(“/tmp/webcom”,0666?)?<?0)
???{
Printf(“?photo?fifo?create?failed\n”);
}
}
??fd_com?=?open?(“/tmp/webcom”,O_RDONLY,0666);
??if?(fd?<?0)
{
perror?(“open?the?file?webcom?error”);
}
?
在while(?ok?>=?0?&&?!pglobal->stop){?后加入
??if?(flags?==?0)
{
while(1)
?{
reade(fd_com,buf,sizeof(buf));
if?(strncmp(buf,”danger”,6)?==?0)????//拍11張照片
{
flags?=?1;
????bzero(buf,sizeof(buf));
????break;
}
if?(strncmp(buf,”one”,3)?==?0)???//拍1張照片
{
flags?=?2;
????bzero(buf,sizeof(buf));
????break;
}
?
}
}
?
在if?(delay?>?0){
???usleep(1000*delay);
}后加入
stop_num++
if?(flags?==?1)????????//判斷拍照的數量
{
if??(?stop_num?>?9)
???{
stop_num?=?0;
flsgs?=?0;
}
}
else?if?(flags?==?2)
{
stop_num?=?0;
flags?=?0;
}
所以只要向有名管道/tmp/webcom寫入danger就能連拍11張照片,寫入one就拍一張照片。
?
注:拍照功能實現:
./bin/mjpg_streamer??–i??“/mjpeg/input_uvc.so??–d??/dev/video0”?-o?“/mjpeg/output_file.so???–f??/pice??-d??15000?”??&??echo??danger??>??/dev/video0?
轉載于:https://www.cnblogs.com/alan666/p/8312305.html
總結
以上是生活随笔為你收集整理的arm开发板6410/2440上mjpg-streamer网络视频服务器移植的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 联想笔记本电脑u盘怎么启动快捷键是什么
- 下一篇: 5.20