编译开发主机:Debian7
硬件开发平台:RT5350F开发套件 (点击这里可以购买)
USB摄像头:中星微zc301
1、Gspcav1驱动移植(通用USB摄像头的驱动程序)
1.1 下载gspcav1-20071224源码,并将其拷贝到linux2.6.21/drivers/media/video下。
1.2 修改video目录下的Kconfig和Makefile,引入gspcav1目录的Kconfig和Makefile,
1.3 在gspcav1目录下新建一个Kconfig,加入如下内容:
config USB_SPCA5XX
tristate "USB SPCA5XX Sunplus/Vimicro/Sonix jpeg Cameras"
depends on USB && VIDEO_DEV
1.4 在gspcav1目录下修改原来的Makefile为如下内容:
gspca-objs := gspca_core.o decoder/gspcadecoder.o
obj-$(CONFIG_USB_SPCA5XX) += gspca.o
1.5 linux内核选上一些配置
V4L USB devices
USB EHCI HCD
USB OHCI HCD
1.6 重新烧写内核后,插上USB摄像头
2、使用spcaview与Servfox
2.1 spcaview的编译
spcaview主要是视频监控的客户端,在本机编译,由于显示是基于SDL,所以确保已安装了SDL库。
编译可能会遇到如下问题:
2.1.1 头文件linux/videodev.h无法找到
解决:首先确保主机是否安装了libv4l-dev。然后将头文件linux/videodev.h修改为libv4l1-videodev.h
2.1.2 ‘BASE_VIDIOCPRIVATE’未定义
解决:在提示未定义的c文件的开头处加入#define BASE_VIDIOCPRIVATE 192
2.2、Servfox的移植
这部分问题不大,修改好Makefile,直接可以编译通过。
2.3、视频监控搭建
在板子上运行servfox:
# ./servfox -d /dev/video0 -s 640x480 -w 7070servfox version: 1.1.3 date: 11:12:2005 (C) mxhaard@magic.fr
wrong spca5xx device
Waiting .... for connection. CTrl_c to stop !!!!
Got connection from 192.168.10.100
在主机电脑上运行spcaview客户端:
./spcaview -g -s 640x480 -w 192.168.10.123:7070
3、mjpeg-streamer
3.1 mjpeg-streamer目录结构
doc --文档
mjpeg-client --监控客户端,有windows和linux两个版本
mjpg-streamer --mjpeg流媒体服务器,以插件的形式支持不同的视频采集和流媒体协议输出
mjpg-streamer-experimental --同上,貌似是实验版本
udp-client --QT客户端
uvc-streamer --uvc服务器
3.2 mjpg-streamer编译
编译时需要注意交叉工具链的设置,默认是本地gcc编译。
除了指定交叉工具链mipsel-linux-gcc外,还有一些linux源码头文件涉及到v4l接口的操作。
通过PLUGINS的值来选择编译不同各类的输入输出插件。
这里我们的摄像头驱动是gspcav1,所以输入插件选择编译“input_gspcav1.so”
使用网页浏览使用http协议,所以输出插件选择“output_http.so”
3.3 搭建mjpeg视频监控
3.3.1 拷贝三个文件到板子:
mjpg_streamer input_gspcav1.so output_http.so
可通过网络文件系统NFS,挂载到mnt目录下,在 /mnt/mjpg-stream/下可以看到以上三个文件
3.3.2 指定库搜索路径
mjpg_streamer运行时需要加载输入输出两个动态库插件,为了能正确的加载,
第1可以将input_gspcav1.so和output_http.so两个文件拷贝到/lib目录下,由于只读文件系统,在做固件的时候可以这样。
第2指定运行时搜索库环境变量LD_LIBRARY_PATH:
# export LD_LIBRARY_PATH=/mnt/mjpg-stream:$LD_LIBRARY_PATH
3.3.3 运行mjpg-streamer
3.3.4 传递一些参数
./mjpg_streamer -i "input_gspcav1.so -d /dev/video0 -r 640x480 -f 30" -o "output_http.so -w ./www"
-d 指定视频摄像头设备节点
-r 分辨率,根据摄像头所支持的分辨率来设置
-f 帧率,即一秒内采集与发送的图像帧数
-y 开启yuv图像格式,默认情况下是mjpeg
-o,--output 指定图像输出(视频网络传输)插件
-w 表示指定网页浏览所需要文件
-p 指定网络通信端口
3.3.5 视频监控端
打开网页浏览器,输入:
http://192.168.10.123:8080/?action=stream
就可以在网页里看到视频画面了:
客户端可以看视频画面: