原创 基于linux-2.6.35的网络视频服务器移植

2010-11-29 17:50 1637 6 6 分类: MCU/ 嵌入式

作者:曹忠明,华清远见嵌入式学院讲师。


一、环境


主机环境 :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)可以实现一些其他相关功能。

  • PARTNER CONTENT

    文章评论0条评论)

    登录后参与讨论
    EE直播间
    更多
    我要评论
    0
    6
    关闭 站长推荐上一条 /3 下一条