当前位置: > 华清远见教育科技集团 > 嵌入式学习 > 讲师博文 > FSPAD_702 MJPG-Streamer视频流服务器移植
FSPAD_702 MJPG-Streamer视频流服务器移植
时间:2016-12-14作者:华清远见

我们希望在FSPAD_702平板的Linux实验项目中使用视频监控功能,首先选择的就是开源的MJPG-Streamer视频流服务器。MJPG-Streamer可以通过文件或者是HTTP方式访问Linux UVC摄像头。

1、 JPEG库的移植

由于平板摄像头采集上的数据为YUV格式,而我们希望得到JPEG的压缩图像,所以需要JPEG库的支持。

a) 下载JPEG库
              通过下面这个网址下载JPEG源码://www.ijg.org/files/jpegsrc.v8b.tar.gz

b) 配置JPEG源码

$ tar xvfjpegsrc.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为编译使用的交叉工具链

如下图即成功生成编译使用的Makefile。

c) 编译和安装

$ make –j2  //编译

        $ make install //安装到指定目录

如下即编译安装成功:

编译生成的库:

d) 添加到文件系统中
            把编译生成的库拷贝的我们使用的文件系统中。

$ cd jpeg-arm

        $ cp lib/* /source/rootfs/lib/  // /source/rootfs为文件系统的路径

2、 MJPG-Streamer的移植

a) 下载MJPG-Streamer源码
              通过下面这个网址下载MJPG-Streamer源码包://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库头文件的路径:

16CFLAGS += -I/home/linux/workdir/farsight/fspad/jpeg/jpeg-arm/include

第24行添加编译input_uvc.so所使用的库文件的路径:

$(CC) $(CFLAGS) -ljpeg -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lodynctrl.lo
        // 修改为:
        $(CC) $(CFLAGS) –ljpeg -L/home/linux/workdir/farsight/fspad/jpeg/jpeg-arm/lib -o $@ input_uvc.c v4l2uvc.lo jpeg_utils.lodynctrl.lo

iii. 修改plugins/input_uvc/v4l2uvc.c
        第99行static int init_v4l2(structvdIn *vd)函数内添加:

#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

第195行mmap函数参数中添加:

vd->buf.length, PROT_READ, MAP_SHARED, vd->fd,
        // 修改为
        vd->buf.length, PROT_READ | PROT_WRITE, MAP_SHARED, vd->fd,

c) 编译MJPG-Streamer源码

$ make clean
        $ make –j2

如下即编译成功:

d) 添加到文件系统中
              把编译生成的应用和库拷贝的我们使用的文件系统中。

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

3、 测试MJPG-Streamer

a) 加载平板Camera驱动

#insmodvideobuf-core.ko
        #insmodvideobuf-dma-contig.ko
        #insmod gc0308.ko
        # insmod sun5i_csi0.ko

b) 运行MJPG-Streamer程序

#mjpg_streamer -i "/mjpg/input_uvc.so -y" -o "/mjpg/output_http.so -w
        192.168.100.191:8080" &

c) 打开网页,输入网址查看摄像头信息。

浏览器上执行:
                //192.168.100.191:8080/?action=snapshot (每次回车单张抓拍)
        或者
                //192.168.100.191:8080/?action=stream   (视频流)

至此,MJPG-Streamer视频服务器就移植成功了。

发表评论
评论列表(网友评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述)