[分享] 【转】RT5350无线视频监控

chenzhufly   2015-3-31 20:24 楼主
编译开发主机:archlinux
硬件开发平台: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与Servfox2.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:

[cpp] view plaincopy



  • # ./servfox -d /dev/video0 -s 640x480 -w 7070  
  • servfox 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客户端:

[cpp] view plaincopy



  • ./spcaview -g -s 640x480 -w 192.168.10.123:7070  



3、mjpeg-streamer3.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:

[cpp] view plaincopy



  • # export LD_LIBRARY_PATH=/mnt/mjpg-stream:$LD_LIBRARY_PATH  



3.3.3 运行mjpg-streamer



3.3.4 传递一些参数
[cpp] view plaincopy



  • ./mjpg_streamer -i "input_gspcav1.so -d /dev/video0 -r 640x480 -f 30" -o "output_http.so -w ./www"  



-i,--input 指定图像输入(视频采集)插件-d 指定视频摄像头设备节点
-r 分辨率,根据摄像头所支持的分辨率来设置
-f 帧率,即一秒内采集与发送的图像帧数
-y 开启yuv图像格式,默认情况下是mjpeg


-o,--output 指定图像输出(视频网络传输)插件
-w 表示指定网页浏览所需要文件
-p 指定网络通信端口


3.3.5 视频监控端打开网页浏览器,输入:

[cpp] view plaincopy



  • http://192.168.10.123:8080/?action=stream  


就可以在网页里看到视频画面了:



客户端可以看视频画面:





生活就是油盐酱醋再加一点糖,快活就是一天到晚乐呵呵的忙 =================================== 做一个简单的人,踏实而务实,不沉溺幻想,不庸人自扰

回复评论 (1)

这图不是很清楚
点赞  2015-4-10 21:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复