本文的目的在与通过S5PV210板利用usb摄像头实现视频或图片捕获,mjpg_streamer的移植就是其中一种方法;并且本文重点在mjpg_streamer的移植,zImage和根文件系统的的制作与开发板的运行已省略,此三项请参考其他文档;
材料: Ubuntu 12.04.5 LTS 虚拟机
S5PV210开发板一块
USB摄像头一个
jpegsrc.v8b.tar.gz压缩包
mjpg-streamer-code-182.zip压缩包
交叉编译工具链 toolchain-4.5.1-farsight.tar.bz2
可能用到(usb转口驱动)
文档导读:
1.jpeg库的移植; 12%
2.mjpg_streamer的移植 39%
3.开发板运行 65%
4.打开开发板运行mjpg_streamer 67%
5.从网页上查摄像头工作情况 88%
1. jpeg库的移植;
(1) 在ubuntu的home目录下建立一个Videos目录;
mkdir Videos
(2) 把下载好的jpegsrc.v8b.tar.gz放入Videos目录下并解压;
tar -xvf jpegsrc.v8b.tar.gz
(3) 配置源码;
cd jpeg-8b
进入解压后的目录执行下列命令
./ configure --prefix =/home/lpf/Videos/jpeg-8b --host= arm-none-linux-gnueabi
(4) 编译
make
(5) 安装
make install
(6) 进入lib目录并把所有.so文件拷贝到/opt/rootfs/lib/目录下
cp libjpeg.so.* /opt/rootfs/lib/
(7) 到此为开发板运行时的根文件系统的jpeg库准备完成.
2.mjpg_streamer的移植
(1) 把下载好的mjpg-streamer-code-182.zip放入Videos目录并解压;
unzip mjpg-streamer-code-182.zip
(2) 进入mjpg-streamer-code-182下的mjpg-streamer目录;
cd mjpg-streamer-code-182/mjpg-streamer
(3) 修改当前目录下及plugins 目录下的各级Makefile ;
① 将上述的Makefile 中的
CC = gcc
修改为
CC = arm-none-linux-gnueabi-gcc
② 修改plugins/input_uvc/Makefile
修改
CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/lpf/Videos/jpeg-8b/include
注:/home/lpf/Videos/jpeg-8b/include 为你的jpeg中的include下文件路径
修改
$(CC) $(CFLAGS) -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC) $(CFLAGS) -L/home/lpf/Videos/jpeg-8b/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
注:/home/lpf/Videos/jpeg-8b/lib为你的jpeg中的lib下文件路径
(4) 编译(回到 mjpg-streamer-code-182/mjpg-streamer)执行
make
目的: 生成mjpg_streamer的.so文件
(5) 进入/opt/rootfs目录下创建mjpg目录
cd /opt/rootfs/
mkdir mjpg
(6) 拷贝文件(回到mjpg-streamer-code-182/mjpg-streamer)
cp mjpg_streamer /opt/rootfs/bin/
cp *.so /opt/rootfs/mjpg/
cp www/ -raf /opt/rootfs/
(7)到此:为开发板板准备的jpeg库和mjpg_streamer文件完毕;
3. 开发板运行
略
4. 在开发板运行mjpg_streamer
./mjpg_streamer -i “/mjpg/input_uvc.so -d/dev/video3” -o “/mjpg/output_http.so -w.www”
注:video3 为你的usb接口 若一切ok,你的摄像头指示灯会亮;
5. 从网页上查摄像头工作情况(注: 192.168.7.106 为你的ubuntu地址);
(1). 打开一个网页输入如下指令就能看到图片;
http:/192.168.7.106:8080/?action=snapshot
(2). 打开一个网页输入如下指令就能看到视频;
http:/192.168.7.106:8080/?action=stream
补充:若环境不同,移植细节可能会有差异,请灵活处理!!