Arm-linux下USB摄像头的视频…
2013-03-05 14:37
323 查看
原文地址:Arm-linux下USB摄像头的视频服务器的实现作者:stone
我使用的是webcom 001
的摄像头,它的控制芯片是zc301,以这款芯片做的摄像头在市场上占有率
很高,大概有70%左右。开发板的内核是Linux2.6.18,交叉编译器是arm-linux-gcc 3.4.1。
配置一下内核,在内核目录下make menuconfig,在Device
driver->Multimedia
devices->Video4Linux,将它编译进内核,使系统提供V4L。然后就是USB摄像头的驱动,尽管其内核中就集成了对0V511、zc301等系列摄像头的支持,开源驱动spca5xx/gspca也提供了对大部分主流摄像头的支持,但还是无法涵盖所有品牌的各种型号的摄像头,尤其是对于国内的中低端用户,很难找到直接可用的Linux下的驱动。于是我在网上下载了gspca驱动(http://mxhaard.free.fr/spca50x/Download/gspcav1-20070508.tar.gz,如果无法链接
的话,可以到csdn上下载,我已经上传了,免资源分),交叉编译make,其中Makefile参考的是
VERSION
= 01.00.18
DEFINES
=
###
# The following flags enable experimental features.
# By default, these are enabled for development versions of the
driver, and
# disabled for release versions.
# Optional: Enable
driver debugging
DEFINES +=
-DGSPCA_ENABLE_DEBUG
# Optional: Enable
direct register read/write for PAC207 development
#DEFINES +=
-DGSPCA_ENABLE_REGISTERPLAY
###
# The following flags enable features that aren't yet implemented,
and
# therefore are disabled by default.
# Optional: Enable
compression
DEFINES +=
-DGSPCA_ENABLE_COMPRESSION
###
# Rest of Makefile follows here. You probably won't need to touch
this.
# Setup
defines
DEFINES +=
-DCONFIG_USB_GSPCA_MODULE=1 -DMODULE -D__KERNEL__
DEFINES +=
-DVID_HARDWARE_GSPCA=0xFF -DGSPCA_VERSION="$(VERSION)"
ifneq
($(KERNELRELEASE),) # We were
called by kbuild
CFLAGS += $(DEFINES)
obj-m += gspca.o
gspca-objs := gspca_core.o decoder/gspcadecoder.o
else # We were called
from command line
KERNEL_VERSION =
`uname -r`
KERNELDIR := /usr/src/linux-2.6.20.3
PWD := $(shell pwd)
MODULE_INSTALLDIR =
/lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/
MODULE_INSTALLDIR2 =
/lib/modules/$(KERNEL_VERSION)/kernel/drivers/media/video/
CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-
ARCH=arm
default:
$(MAKE) -C
$(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) ARCH=$(ARCH)
CROSS_COMPILE=$(CROSS_COMPILE) modules
install:
mkdir -p
$(MODULE_INSTALLDIR)
rm -f
$(MODULE_INSTALLDIR)spca5xx.ko
rm -f
$(MODULE_INSTALLDIR2)gspca.ko
install -c
-m 0644 gspca.ko $(MODULE_INSTALLDIR)
/sbin/depmod
-ae
uninstall:
rm -f
$(MODULE_INSTALLDIR)gspca.ko
/sbin/depmod
-aq
endif
##############################################################################
# OTHER TARGETS
##############################################################################
clean:
rm -r -f *.o
decoder/.gspcadecoder.o.cmd decoder/*.o
.gspca.o.cmd *.o *.ko *.mod.* .[a-z]* core *.i
*.symvers
*.err
##############################################################################
就会在解压目录下生成gspca.ko,然后cp gspca.ko
/home/NFS,在开发板上insmod gspca.ko。
这时ls /dev就会看到一些设备文件vedio0
usbdev1.2_ep82
usbdev1.2_ep81。将USB摄像头插入开发板的USB接口。这时USB摄像头的驱动已经搞定了。下面再移植servfox做服务器,用spacview播放即可。注意,
spacview需要SDL库的支持,如果没有的话会出错。还有就是运行交叉编译的servfox要带参数的,如
./servfox -d /dev/video0 -s 640x480 -w
192.168.1.75:7070,当然运行客户端播放程序也要带参数的,
如在局域网内另一台PC上运行./spcaview -d /dev/video0 -s 640x480 -w
192.168.1.75:7070。csdn上编译好的servfox和spcaview下载。当然也可以下载到源码自己编译。
运行后的效果图如下:
我使用的是webcom 001
的摄像头,它的控制芯片是zc301,以这款芯片做的摄像头在市场上占有率
很高,大概有70%左右。开发板的内核是Linux2.6.18,交叉编译器是arm-linux-gcc 3.4.1。
配置一下内核,在内核目录下make menuconfig,在Device
driver->Multimedia
devices->Video4Linux,将它编译进内核,使系统提供V4L。然后就是USB摄像头的驱动,尽管其内核中就集成了对0V511、zc301等系列摄像头的支持,开源驱动spca5xx/gspca也提供了对大部分主流摄像头的支持,但还是无法涵盖所有品牌的各种型号的摄像头,尤其是对于国内的中低端用户,很难找到直接可用的Linux下的驱动。于是我在网上下载了gspca驱动(http://mxhaard.free.fr/spca50x/Download/gspcav1-20070508.tar.gz,如果无法链接
的话,可以到csdn上下载,我已经上传了,免资源分),交叉编译make,其中Makefile参考的是
VERSION
= 01.00.18
DEFINES
=
###
# The following flags enable experimental features.
# By default, these are enabled for development versions of the
driver, and
# disabled for release versions.
# Optional: Enable
driver debugging
DEFINES +=
-DGSPCA_ENABLE_DEBUG
# Optional: Enable
direct register read/write for PAC207 development
#DEFINES +=
-DGSPCA_ENABLE_REGISTERPLAY
###
# The following flags enable features that aren't yet implemented,
and
# therefore are disabled by default.
# Optional: Enable
compression
DEFINES +=
-DGSPCA_ENABLE_COMPRESSION
###
# Rest of Makefile follows here. You probably won't need to touch
this.
# Setup
defines
DEFINES +=
-DCONFIG_USB_GSPCA_MODULE=1 -DMODULE -D__KERNEL__
DEFINES +=
-DVID_HARDWARE_GSPCA=0xFF -DGSPCA_VERSION="$(VERSION)"
ifneq
($(KERNELRELEASE),) # We were
called by kbuild
CFLAGS += $(DEFINES)
obj-m += gspca.o
gspca-objs := gspca_core.o decoder/gspcadecoder.o
else # We were called
from command line
KERNEL_VERSION =
`uname -r`
KERNELDIR := /usr/src/linux-2.6.20.3
PWD := $(shell pwd)
MODULE_INSTALLDIR =
/lib/modules/$(KERNEL_VERSION)/kernel/drivers/usb/media/
MODULE_INSTALLDIR2 =
/lib/modules/$(KERNEL_VERSION)/kernel/drivers/media/video/
CC=/usr/local/arm/3.4.1/bin/arm-linux-gcc
CROSS_COMPILE=/usr/local/arm/3.4.1/bin/arm-linux-
ARCH=arm
default:
$(MAKE) -C
$(KERNELDIR) SUBDIRS=$(PWD) CC=$(CC) ARCH=$(ARCH)
CROSS_COMPILE=$(CROSS_COMPILE) modules
install:
mkdir -p
$(MODULE_INSTALLDIR)
rm -f
$(MODULE_INSTALLDIR)spca5xx.ko
rm -f
$(MODULE_INSTALLDIR2)gspca.ko
install -c
-m 0644 gspca.ko $(MODULE_INSTALLDIR)
/sbin/depmod
-ae
uninstall:
rm -f
$(MODULE_INSTALLDIR)gspca.ko
/sbin/depmod
-aq
endif
##############################################################################
# OTHER TARGETS
##############################################################################
clean:
rm -r -f *.o
decoder/.gspcadecoder.o.cmd decoder/*.o
.gspca.o.cmd *.o *.ko *.mod.* .[a-z]* core *.i
*.symvers
*.err
##############################################################################
就会在解压目录下生成gspca.ko,然后cp gspca.ko
/home/NFS,在开发板上insmod gspca.ko。
这时ls /dev就会看到一些设备文件vedio0
usbdev1.2_ep82
usbdev1.2_ep81。将USB摄像头插入开发板的USB接口。这时USB摄像头的驱动已经搞定了。下面再移植servfox做服务器,用spacview播放即可。注意,
spacview需要SDL库的支持,如果没有的话会出错。还有就是运行交叉编译的servfox要带参数的,如
./servfox -d /dev/video0 -s 640x480 -w
192.168.1.75:7070,当然运行客户端播放程序也要带参数的,
如在局域网内另一台PC上运行./spcaview -d /dev/video0 -s 640x480 -w
192.168.1.75:7070。csdn上编译好的servfox和spcaview下载。当然也可以下载到源码自己编译。
运行后的效果图如下:
相关文章推荐
- 【servfox】Arm-linux下USB摄像头的视频服务器的实现
- Linux-视频监控系统(10)-对USB摄像头的YUV图片压缩成视频
- 虚拟机上Linux读取播放USB摄像头视频卡住的问题
- 基于itop4412在Linux最小系统下的USB摄像头采集视频的H264编码
- 基于S3C2440的Linux-3.6.6移植——基于UVC的USB摄像头移植及视频显示
- 基于S3C2440的Linux-3.6.6移植——基于UVC的USB摄像头移植及视频显示
- 讯为iTOP4412开发板ARM-linux 使用OPENCV调用USB摄像头
- 让arm-linux支持普通USB摄像头
- 【ARM-Linux开发】Rico Board上编译USB WiFi RT3070驱动
- OpenCV学习——读取usb摄像头或视频并按帧保存
- linux系统V4L2架构OV3640摄像头视频捕获保存图片jpg格式
- arm驱动程序——按键程序2(韦东山的视频总结及针对linux-2.6.30)
- USB摄像头到ARM下图像显示方案
- Windows下Qt使用Usb摄像头采集视频实现鼠标事件
- Linux V4L2 摄像头视频采集
- Linux 下摄像头视频采集与显示
- 关于linux调用多个usb摄像头时无法工作的问题
- arm驱动程序——按键程序2(韦东山的视频总结及针对linux-2.6.30)
- ARM-Linux下用Servfox和Spcaview 建立嵌入式视频监控系统
- linux_ok6410配置usb摄像头ZC3XX并在网页使用流媒体显示