mjpg-streamer是基于jpeg库来处理摄像头数据的,因此在移植mjpg-streamer之前必须先移植jpeg库,否则在编译mjpg-streamer时会报告错误。
现在这里下载jpeg库的源代码和mjpg-streamer源代码:
jpeg库下载地址:http://download.youkuaiyun.com/detail/laoylhuli/5029006
mjpg-streamer源代码下载地址:http://download.youkuaiyun.com/detail/laoylhuli/5029022
1、jpeg库的移植:
1)、解压源码包
#tar zxvf jpegsrc.v8b.tar.gz
2)、配置源码
#./configure --prefix=/home/laoyl/jpeg --host=arm-none-linux-gnueabi
3)、编译
#make
4)、安装
#make install
5)、将jpeg库移至开发板
安装完毕在指定的安装路径下/home/laoyl/jpeg出现了bin include lib share 4个文件夹,将lib目录下的所有库文件移植到开发板根目录下的lib下就可以了
2、mjpg-streamer源代码移植:
1)、解压源码包
#tar zxvf mjpg-streamer-r63.tar.gz
2)、在源码文件夹下,修改顶层的Makefile和
plugins中各级目录的Makefile
CC=gcc
修改为
CC=arm-none-linux-gnueabi-gcc #编译器替换成交叉编译器
3)、定位jpeg库
修改plugins/input_uvc/Makfile
修改
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC
为
CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/laoyl/jpeg/include
修改
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
为
$(CC) $(CFLAGS) -ljpeg -L/home/laoyl/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
#make
当编译完毕之后,会在顶层目录中出现mjpg-streamer和一些input和output的插件库。将这些插件库xx.so全部放到开发板的lib目录下(这样就不用修改开发板lib的环境变量了),并且把mjpg-streamer可执行文件放到开发板的bin目录下,把www文件夹也放到开发板的目录下。
5)、运行
在开发板上执行
mjpg_streamer -i "input_uvc.so" -o "output_http.so -w /www"
如果一切正常则开始了视频传输。
具体的指令请看start.sh脚本,这个脚本里面包含了一些基本指令,例如打开的视频设备号,和图像是否保存等。
在火狐浏览器下http://192.168.1.230:8080/?action=stream (192.168.1.230是自己的开发板ip,不同的开发板ip会不同)。
在火狐浏览器下http://192.168.1.230:8080/?action=snapshot (静态图片)
未完待续,下一讲将介绍如果建立WEB服务器和配置花生壳,利用花生壳剥壳技术实现外网的视频监控。