《mjpg_streamer视频服务器移植》由会员分享,可在线阅读,更多相关《mjpg_streamer视频服务器移植(5页珍藏版)》请在金锄头文库上搜索。
1、首先内核配置一些相关信息一:usb驱动添加Make menuconfig Device supportScsi device support* scsi disk support* scsi generic support * scsi media changer support x - Device support x - USB support x - USB Mass Storage support 二:添加驱动(video)Make menuconfigDevice Drivers - Multimedia support - Video For Linux * Enable Vide
2、o 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 ZC0301P webcam support (DEPRECATED)Mount -t vfat /dev/sda1 /mnt三:网络视频服务器移植对于内核linux-2.6.35,不能再使用servfox,如果要使用的需要修改大量的代码,在此选用新的方法来移植。需要两个文件jp
3、eg,mjpg-stream.移植如下:jpeg库的移植jpeg源码包通过下面这个网址下载http:/www.ijg.org/files/jpegsrc.v8b.tar.gz解压源码包tar xvf jpegsrc.v8b.tar.gz配置源码cd jpeg-8b./configure -prefix=/home/linux/jpeg -host=arm -none-linux-gnueabi(./configure 配置源代码树 安装目录:-prefix=PREFIX体系无关文件的顶级安装目录PREFIX ,也就Apache的安装目录。/usr/local/apache2系统类型:-host
4、=HOST指定Apache HTTP服务器将要运行的目标系统类型HOST 。BUILD)编译make安装make install拷贝库到文件系统中cp /home/linux/jpeg /lib/libjpeg.so.8 /source/rootfs/libmjpg-stream的移植mjpg-stream源码包通过下面这个网址下载http:/ 解压源码tar xvf mjpg-streamer-r63.tar.gzmkdir /home/linux/jpeg修改源码cd mjpg-streamer-r63修改顶层makefile及plugins目录中的各级makefile将所有 (注意这里需
5、要修改的内容)CC=gcc修改为修改plugins/input_uvc/Makfile修改CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC为修改$(CC) $(CFLAGS) -ljpeg -o $ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo为编译(make clean)makemkdir /source/rootfs/mjpgcp *.so /source/rootfs/mjpgcp mjpg-streamer /source/rootfs/bin将摄像头驱动s5pc100_ca
6、m.ko拷贝到 /source/rootfs目录下插入摄像头测试运行boa服务器/etc/boa/boa&插入摄像头驱动insmod s5pc100_cam.ko运行mjpg_streammjpg_streamer -i “/mjpg/input_uvc.so -y” -o “/mjpg/output_http.so -w 192.168.1.200:8080”& (注意:这里是板子的ip 192.168.1.200)浏览器上执行:http:/192.168.1.200:8080/?action=snapshot (每次回车单张抓拍)或者http:/192.168.1.200:8080/?ac
7、tion=stream (视频流)或者打开viewer.exe,输入IP和端口,点击Connect连接,可在下方看到视频流。拍照功能的实现由于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 buf10; /用于存放从管道读取的命令int flags = 0; /拍照标志
8、,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 failedn”); fd_com = open (“/tmp/webcom”,O_RDONLY,0666); if (fd_com = 0 & !pglobal-stop) 后加入 if (flags = 0)while(1) rea
9、d(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;flags = 0;else if (flags = 2)stop_num = 0;flags = 0;所以只要向有名管道/tmp/webcom写入danger就能连拍11张照片,写入one就拍一张照片。注:拍照功能实现:mjpg_streamer -i /mjpg/input_uvc.so -y -o /mjpg/output_http.so -w /www -o /mjpg/output_file.so -f /pice -d 15000 &