zoukankan      html  css  js  c++  java
  • 迅为IMX6UL开发板 mjpg-streamer 移植实现远程监控

    本节介绍移植 MJPG 库和 mjpg-streamer 服务器到迅为 i.MX6UL 全能板上,并将采集到的图像通过网络在 PC 机上显示出来,交叉编译工具为 arm-linux-gnueabihf,摄像头为 USB 免驱摄像头。

    1 移植 MJPG

    因为使用 mjpg-streamer 要用到 MJPG 库,所以我们要先把 MJPG 库移植到开发板上。

    MJPG MJPEG 的缩写,MJPEG 是一种视频编码格式,但是 MJPEG 还可以表示文件格式扩展名,常用于闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,能发送高质量图片,生成完全动画视频,即由系列 jpg 图片组成视频。

    MJPG 库下载地址:http://www.ijg.org/files/,本文档选择的 jpegsrc.v8b.tar.gz 这个版本,也可以使用文档同一目录下的 jpegsrc.v8b.tar.gz 压缩包,然后在 Ubuntu 创建文件夹 mjpg

    mkdir mjpg 将下载好的 jpegsrc.v8b.tar.gz 压缩包放到 mjpg 文件夹下,然后解压:

    tar -vxf jpegsrc.v8b.tar.gz

     


    然后在此目录下创建文件夹用来存放编译生成文件,

    mkdir _jpeg_install

     

    进入 jpeg-8b 文件夹,执行以下命令配置编译选项:

    ./configure --prefix=/home/work/mjpg/_jpeg_install --host=arm-linux-gnueabihf

    参数说明:

    --prefix=/home/ubuntu/work/mjpg/_jpeg_install:为上步创建的文件夹路径,根据实际填写。

    --host=arm-linux-gnueabihf:为交叉编译工具的名字。

    完成后如下图所示:

     

    执行 make 编译,完成后如下图所示:

     

    执行 make install,完成后如下图所示:

     

    进入_jpeg_install 文件夹查看,有图所示文件即为成功:

     

    将_jpeg_install 的/lib/下的库文件拷贝到要烧写的根文件系统/lib/目录下:

     

    2 移植 mjpg-streamer 服务器

    mjpg-streamer 是一个命令行应用程序,可通过网络将 JPEG 文件从网络摄像头流传输到各种类型的查看

    器,例如浏览器,mplayer 等其他能够接收 MJPG 流的软件。

    下载网站:https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/

    在这里我们已经下载好,存放路径为iTOP-iMX6UL 开发板资料汇总6_ 第三方库移植资料

    6_mjpg-streamer 移植mjpg-streamer-code.tar”,将该文件拷贝到 Ubuntu 下,如下图所示:

     

    使用命令

    tar -vxf mjpg-streamer-code.tar

    对其进行解压:

    进入/mjpg-streamer-code/mjpg-streamer 文件夹:

     

    执行 make clean,然后输入以下命令修改交叉编译工具:

    find -name "Makefile" -exec sed -i "s/CC = gcc/CC = arm-linux-gnueabihf-gcc/g" {} ;

    查看是否修改成功,grep "arm-linux-gnueabihf-gcc" * -nR

     

    继续修改编译选项,使用命令

    grep "CFLAGS" -nR

    根据搜索出来的信息,使用命令:

    vim plugins/input_uvc/Makefile

    修改 plugins/input_uvc/Makefile,第 15 行添加

    CFLAGS += -I /home/work/mjpg/_jpeg_install/include/

    25 行改为:

    LFLAGS += -L /home/work/mjpg/_jpeg_install/lib/ -ljpeg

    完成后如下图所示:

     

    保存退出,回到 mjpg-streamer 目录下,执行 make 编译,成功后如图 49.2.6:

     

    在目录下会生成.so 库文件和 mjpg_streamer

     

    将.so 文件拷贝到要烧写的根文件系统/lib/目录下,mjpg_streamer 文件夹拷贝要烧写的根文件系统/bin/

    目录下,www 拷贝到要烧写的根文件系统/opt/目录下:

     

    在文件系统目录下使用命令

    tar -vcjf rootfs.tar.bz2 *

     

    进行压缩处理,生成 rootfs.tar.bz2 文件。然后将该文件系统烧写到开发板上。

    3 测试

    测试过程中要保证网络畅通,根据 start.sh 文件,输入以下命令测试:

    mjpg_streamer -i "input_uvc.so -d /dev/video2 -r 320x240 -f 30 -yuv" -o "output_http.so -w /opt/www"

    报错可以忽略,

     

    下方会显示端口号:

     

    然后在 Ubuntu 的火狐浏览器输入服务器 ip 和端口号,ip 为开发板 ip,端口号默认为 8080

    http://192.168.1.120:8080/

     

    能看到图像说明移植成功。

  • 相关阅读:
    粘包_Server
    初见UDP_Server
    初见UDP_Client
    TCP/UDP协议
    网络编程相关概念
    mmap实现大文件快速拷贝
    生成这消费者问题(多线程实现)
    线程同步互斥实现资源访问
    信号灯(线程互斥)
    线程属性
  • 原文地址:https://www.cnblogs.com/topeet/p/15151633.html
Copyright © 2011-2022 走看看