基于ARM9和USB摄像头的网络视频采集系统设计(3)
- UID
- 1029342
- 性别
- 男
|
基于ARM9和USB摄像头的网络视频采集系统设计(3)
MJPG-streamer是一款免费基于IP地址的视频流服务器,它的输入插件从摄像头读取视频数据,这个输入插件产生视频数据并将视频数据复制到内存中,它有多个输出插件将这些视频数据经过处理,其中最重要的输出插件是网站服务器插件,它将视频数据传送到用户浏览器中,MJPG-streamer的工作就是将其中的一个输入插件和多个输出插件绑定在一起,所有的工作都是通过它的各个插件完成的。MJPG-stream er源码包可从SourceForge网站下载使用。各个文件如下:
(1)input_testpicture.so。这是一个图像测试插件,它将预设好的图像编译成一个头文件,可以在没有摄像头的情况下传输图像,从而方便调试程序。
(2)input_uvc.so。此文件调用USB摄像头驱动程序V4L2,从摄像头读取视频数据。
(3)input_control.so。这个文件实现对摄像头转动的控制接口。
(4)output_http.so。这是一个功能齐全的网站服务器,它不仅可以从单一文件夹中处理文件,还可以执行一定的命令,它可以从输入插件中处理一幅图像,也可以将输入插件的视频文件根据现有M-JPEG标准以HTTP视频数据服务流形式输出。
(5)output_file.so。这个插件的功能是将输入插件的JPEG图像存储到特定的文件夹下,它可以用来抓取图像。
将MJPG-streamer视频流服务器移植到目标板上运行,从而可以实现网络视频数据的采集,具体移植过程:
(1)首先移植MJPG-streamer依赖的jpeg库。在/usr/local目录下解压源码包tar xvzf jpegsrc.v8b.tar.gz。
(2)修改配置文件./configure--prefix=/usr/video/jpeg--host=arm-linux-gnueabi,编译:make,安装:make install,最后将/usr/local/video/jpeg/lib目录下的libjpeg.so.8文件拷贝到文件系统中的lib目录下。
(3)解压源码包:tar zxvf mjpg-streamer.tar.gz;
(4)修改源码:修改顶层Makefile及plugins目录中的各级Makefile将所有CC=gcc修改为CC=arm-linux-gcc。修改/usr/local/mjpg-streamer-r63/plugins/input_uvc目录下的Makfile文件,在CFLAGS+=-O2-DLINUX-D_GNU_SOURCE-Wall-shared-fPIC后加上I//usr/loc al/video/jpeg//include,把$(CC)$(CFLAGS)-ljpeg-o$@input_uvc.c v412uvc.lo jpeg_utils.lodynctrl.lo代码修改为$(CC)$(CFLAGS)-ljpeg-L/usr/local/video/jpeg/lib-o$@input_uvc.c v412uvc.lojpeg_utils.lo dynctrl.lo,从而加载前面编译安装的jpeg库文件,使得MJPG-streamer能够调用到jpeg库。
(5)交叉编译:make CC=arm-linux-gcc,交叉编译器为arm-linux-gcc4.3.2,生成ARM板可执行的二进制文件。
网络视频采集系统软件流程图如图4所示。
|
|
|
|
|
|