linux2.6.35内核视频网络移植

enxue1988 2011-05-26 11:12:15
一、环境
主机环境 :ubuntu 10.10
目标机:FS2410(S3C2410)
主机工具链 :gcc-4.4.5
交叉工具链:arm-none-linux-gnueabi-gcc-4.3.2
摄像头 :ZC301

二、移植过程
1、配置内核是内核支持芯片为ZC301的摄像头

Make menuconfig
Device Drivers --->
<*> Multimedia support --->
<*> Video For Linux
  • Enable Video For Linux API 1
  • (DEPRECATED) (NEW)
  • Video capture adapters
  • (NEW) --->
  • V4L USB devices
  • (NEW) --->
    <*> USB Video Class (UVC)
  • UVC input events device support
  • (NEW)
    <*> USB ZC0301[P] webcam support (DEPRECATED)
    2、重新编译内核

    make zImage

    通过上面两个步骤就可以驱动我们的摄像头了。但是这个驱动是基于V4l2的。以前基于V4L的一些上层应用就不能用了,或需要做大量的修改!这里我们要实现网络视频的功能,
    以前都是用servfox这个网络视频服务器,但是这个服务器就是基于V4L的,我们如果想用的话就得对servfox的源码进行修改。这里我们选用另外一种方案mjpg-stream。

    3、mjpg-stream的移植

    关于mjpg-stream的资料大家可以在下面这个网址查看:http://sourceforge.net/apps/mediawiki/mjpg-streamer/index.php?title=Main_Page
    mjpg-stream的移植需要jpeg的库,所以我们先移植jpeg的库

    (1)jpeg库的移植

    1)jpeg源码包通过下面这个网址下载 http://www.ijg.org/files/jpegsrc.v8b.tar.gz

    2)解压源码包 tar xvf jpegsrc.v8b.tar.gz

    3)配置源码
    cd jpeg-8b
    ./configure --prefix=/home/linux/s3c2410-2.6.35/video/jpeg --host=arm-none-linux-gnueabi

    4)编译 make

    5)安装 make install

    6)拷贝库到文件系统中 cp //home/linux/s3c2410-2.6.35/video/jpeg/lib/libjpeg.so.8 /source/rootfs/lib

    (2)mjpg-stream的移植

    1)mjpg-stream源码包通过下面这个网址下载 http://sourceforge.net/projects/mjpg-streamer/

    2)解压源码 tar xvf mjpg-streamer-r63.tar.gz

    3)修改源码
    cd mjpg-streamer-r63

    修改顶层makefile及plugins目录中的各级makefile将所有
    CC=gcc
    修改为
    CC=arm-none-linux-gnueabi-gcc

    修改plugins/input_uvc/Makfile

    修改
    CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC

    CFLAGS += -O2 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC -I/home/linux/s3c2410-2.6.35/video/jpeg/include

    修改
    $(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

    $(CC) $(CFLAGS) -ljpeg -L/home/linux/s3c2410-2.6.35/video/jpeg/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lo dynctrl.lo

    jpeg_utils.c:27: fatal error: jpeglib.h: No such file or directory

    4)编译
    make

    5)测试
    mkdir /source/rootfs/mjpg
    cp *.so /source/rootfs/mjpg
    cp mjpg-stream /source/rootfs/bin

    打开开开发板运行

    mjpg_streamer -i "/mjpg/input_uvc.so" -o "/mjpg/output_http.so -w /www"
    在源码目录下有start.sh,这个脚本里有一些mjpg-stream的使用方法及说明

    打开一个网页输入下面地址就能够看到一个视频(开发板的IP为192.168.1.202):
    http://192.168.1.202:8080/?action=stream
    打开一个网页输入下面地址就能够看到一个静态图片:
    http://192.168.1.202:8080/?action=snapshot
    6)在mjpg源码下有一个www的目录,这个一个网络使用mjpg的实例,结合web服务器(boa)可以实现一些其他相关功能。
...全文
1565 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
colwer 2012-08-30
  • 打赏
  • 举报
回复
[<c033c3b0>] (s3c_fimc_v4l2_s_parm+0x64/0x70) from [<c02f2f7c>] (__video_do_ioctl+0x27e8/0x4a44)
[<c02f2f7c>] (__video_do_ioctl+0x27e8/0x4a44) from [<c02f5294>] (video_ioctl2+0xbc/0x594)
[<c02f5294>] (video_ioctl2+0xbc/0x594) from [<c02ef6d4>] (v4l2_ioctl+0x3c/0x5c)
[<c02ef6d4>] (v4l2_ioctl+0x3c/0x5c) from [<c00f8f54>] (do_vfs_ioctl+0x8c/0x57c)
[<c00f8f54>] (do_vfs_ioctl+0x8c/0x57c) from [<c00f9484>] (sys_ioctl+0x40/0x68)
[<c00f9484>] (sys_ioctl+0x40/0x68) from [<c0034b40>] (ret_fast_syscall+0x0/0x30)
Code: bad PC value
---[ end trace da227214a82491c4 ]---
: Format............: MJPEG
Segmentation fault
kingzv 2011-10-27
  • 打赏
  • 举报
回复
请问zc301摄像头具体是什么牌子,哪个型号的
zuosifengli 2011-10-13
  • 打赏
  • 举报
回复
这一系列的动作是在开发板上吗?
liuhonggang23 2011-10-11
  • 打赏
  • 举报
回复
这个我已经做好了,谢谢!!
liuhonggang23 2011-10-11
  • 打赏
  • 举报
回复
在配置源码的时候那个/home/....路径是什么路径?不太理解
ww2000e 2011-05-26
  • 打赏
  • 举报
回复
干啥?

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧