linux-3.0.8-LZ210-V1 移植摄像头: USB 摄像头 芯片:中星微ZC301P

来源:互联网 发布:开淘宝店如何交保证金 编辑:程序博客网 时间:2024/04/30 06:36

注意你为何使用本文件针对

内核版本:linux-3.0.8-LZ210-V1

移植摄像头: USB摄像头 芯片:中星微ZC301P

 

 

首先内核配置一些相关信息

一:添加驱动(video)

make menuconfig

Device Drivers  --->  

Scsi device support --->

* scsi disk support

* scsi generic support

* scsi media changer support

  <*> Multimedia support  --->

  <*>   Video For Linux

[*]   Video capture adapters (NEW)  --->

[*]   V4L USB devices (NEW)  --->

<*>   USB Video Class (UVC)

[*]     UVC input events device support (NEW)

  <*>   GSPCA based webcams  --->

  <*>   ZC3XX USB Camera Driver

二:网络视频服务器移植

于平板摄像头采集上的数据为 YUV格式,而我们希望得到 JPEG的压缩图像,所以需
JPEG库的支持。
a) 下载 JPEG库
通过下面这个网址下载 JPEG源码:http://www.ijg.org/files/jpegsrc.v8b.tar.gz
b) 配置 JPEG源码
$ tar xvf jpegsrc.v8b.tar.gz
$ cd jpeg-8b
$./configure --prefix=/home/linux/home/lee/workdir/farsight/fspad/jpeg/jpeg-arm --host=arm-none-linux-gnueab
// --prefix为指定安装的目录
// --host为编译使用的交叉工具链

c) 编译和安装
$ make j2 //编译
$ make install //安装到指定目录

d) 添加到文件系统中 把编译生成的库拷贝的我们
使用的文件系统中。
$ cd  jpeg-arm
$ cp  lib/* /source/rootfs/lib/   // /source/rootfs为文件系统的路

JPG-Streamer的移植

a) 下载 MJPG-Streamer源码
通过下面这个网址下载 MJPG-Streamer源码包:
http://sourceforge.net/projects/MJPG-streamer/

b) 配置 MJPG-Streamer源码:
i. 修改 Makefile文件
修改顶层 Makefile以及所有子层 Makefile件中的编译工具项:
CC = gcc
// 修改为:
CC = arm-none-linux-gnueabi-gcc

ii. 再次修改 plugins/input_uvc/Makfile文件
16行添加需要使用 JPEG库头文件的路径:
16 CFLAGS += -I/home/linux/workdir/farsight/fspad/jpeg/jpeg-arm/include
FSPAD_702MJPG-Streamer视频流服务器移植
3
24行添加编译 input_uvc.so所使用的库文件的路径:
$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo
// 修改为:
$(CC) $(CFLAGS) –ljpeg -L/home/linux/workdir/farsight/fspad/jpeg/jpeg-arm/lib -o
$@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

iii. 修改 plugins/input_uvc/v4l2uvc.c
99staticintinit_v4l2(structvdIn*vd)函数内添加(99行附近}号后面位置加就行
#if 1
struct v4l2_input inp;
inp.index = 0;
if (-1 == ioctl(vd->fd, VIDIOC_S_INPUT, &inp))
printf("VIDIOC_S_INPUT error\n");
#endif
195mmap函数参数中添加:
vd->buf.length, PROT_READ, MAP_SHARED, vd->fd,
// 修改为
vd->buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, vd->fd,
注销 下面代码
/*
*setframerate
*/
structv4l2_streamparm*setfps;
setfps=(structv4l2_streamparm*)calloc(1,sizeof(structv4l2_streamparm));
memset(setfps,0,sizeof(structv4l2_streamparm));
setfps->type=V4L2_BUF_TYPE_VIDEO_CAPTURE;
setfps->parm.capture.timeperframe.numerator=1;
setfps->parm.capture.timeperframe.denominator=vd->fps;
ret=ioctl(vd->fd,VIDIOC_S_PARM,setfps);

c) 编译 MJPG-Streamer源码
$ make clean
$ make –j2

d) 添加到文件系统中 把编译生成的应用和库拷贝的我们使
用的文件系统中。
$ cp *.so /source/rootfs/mjpg // /source/rootfs 为文件系统的路径
$ cp mjpg-streamer /source/rootfs/bin

四、 测试 MJPG-Streamer
b) 运行 MJPG-Streamer程 切记不要打错

# mjpg_streamer -i "/mjpg/input_uvc.so" -o "/mjpg/output_http.so -w
开发板ip:8080"  &

 

浏览器输入

http:// 开发板ip:8080/?action=stream  (视频流)

 

 

 

 

 

如果出现:

MJPG-streamer [1563]: Using V4L2 device.: /dev/video3

 

 i: Desired Resolution: 640 x 480

MJPG-streamer [1563]: Desired Resolution: 640 x 480

 

 i: Frames Per Second.: 5

MJPG-streamer [1563]: Frames Per Second.: 5

 

 i: Format............: MJPEG

MJPG-streamer [1563]: Format............: MJPEG

 

ERROR opening V4L interface: No such file or directory

 Init v4L2 failed !! exit fatal

 i: init_VideoIn failed

MJPG-streamer [1563]: init_VideoIn failed

 

 

说明:

MJPG-streamer [1563]: Using V4L2 device.: /dev/video3后边的/dev/video3视频设备路径指定出错。

解决方法:

第一步:拔掉摄像头 开启开发板 putty输入vi /dev/video  连按两下tab键会有如下现象:

[root@lz210 /]# vi /dev/video

/dev/video0   /dev/video14  /dev/video21

/dev/video1   /dev/video2   /dev/video22

[root@lz210 /]# vi /dev/video

第二步:插上摄像头 开启开发板 putty输入vi /dev/video  连按两下tab键会有如下现

[root@lz210 /]# vi /dev/video

/dev/video0   /dev/video14  /dev/video21  /dev/video3

/dev/video1   /dev/video2   /dev/video22

[root@lz210 /]# vi /dev/video

第三步:对比第一步与第二步,你会发现多出来一个  /dev/video3(视个人情况,我的是多出这个 对应上就行),这说明/dev/video3就是你的摄像头。

第四步:打开mjpg-streamer-r63内核源码

修改mjpg-streamer-r63/mjpg_streamer.c

vi mjpg_streamer.c

在普通模式下输入 /video0

修改:把/dev/video0

为:dev/video3

第四步:

修改 vi  plugins/input_uvc/input_uvc.c

同理找到/dev/video0  video0改成video3即可  

第五步:编译 MJPG-Streamer源码
$ make clean
$ make –j2

$ cp *.so /source/rootfs/mjpg // /source/rootfs 为文件系统的路径
$ cp mjpg-streamer /source/rootfs/bin

回到:四、 测试 MJPG-Streamer
就解决问题了

0 0
原创粉丝点击