内容摘要:
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的摄像头。
参考文章: