325|3

985

帖子

25

资源

一粒金砂(高级)

【米尔MYD-YA15XC-T评测】+使用mjpg-streamer搭建网络摄像头 [复制链接]

本帖最后由 dql2016 于 2021-11-20 16:03 编辑

0、mjpg-streamer介绍

mjpg-streamer是一款免费基于IP地址的视频流服务器,它的输入插件从摄像头读取视频数据,这个输入插件产生视频数据并将视频数据复制到内存中,它有多个输出插件将这些视频数据经过处理,其中最重要的输出插件是网站服务器插件,它将视频数据传送到用户浏览器中,mjpg-streamer的工作就是将其中的一个输入插件和多个输出插件绑定在一起,所有的工作都是通过它的各个插件完成的。mjpg-streamer各个文件如下:

    (1)input_testpicture.so。这是一个图像测试插件,它将预设好的图像编译成一个头文件,可以在没有摄像头的情况下传输图像,从而方便调试程序。

    (2)input_uvc.so。此文件调用USB摄像头驱动程序V4L2,从摄像头读取视频数据。

    (3)input_control.so。这个文件实现对摄像头转动的控制接口。

    (4)output_http.so。这是一个功能齐全的网站服务器,它不仅可以从单一文件夹中处理文件,还可以执行一定的命令,它可以从输入插件中处理一幅图像,也可以将输入插件的视频文件根据现有M-JPEG标准以HTTP视频数据服务流形式输出。

    (5)output_file.so。这个插件的功能是将输入插件的JPEG图像存储到特定的文件夹下,它可以用来抓取图像。

mjpg-streamer优点是对RAM和CPU的消耗比较少,可以快速的传输jpeg流。

 

一、米尔SDK安装

1安装sdk.PNG 在终端执行命令:

. /opt/st/myir/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi

将设置好交叉编译工具链,常用的环境变量如CC。

 

二、libjpeg交叉编译

有些UVC摄像头只支持输出YUV原始图像,此时mjpg-streamer会将其转码为mjpeg,然后进行传输,此时会对CPU的消耗以及实时流的流畅度有影响,特别是分辨率比较大的时候。

因此mjpg-streamer 依赖 libjpeg, libjpeg下载地址:
http://www.ijg.org/

jpeg项目主页.PNG

目前最新版本是v9d。libjpeg交叉编译命令:

make clean
. /opt/st/myir/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
./configure --host=arm-ostl-linux-musl --prefix=$HOME/stm32mp1/build_jpegsrc.v9d
make -j6
make install

写成编译脚本:

2交叉编译jpeg.PNG

编译成功后得到动态库:

3jpeg编译结果.PNG

 

米尔MYD-YA15XC-T内核已经配置好了UVC和USB 驱动,因此无需重新配置编译内核。

 

三、mjpg-streamer交叉编译

mjpeg-streamer下载

https://sourceforge.net/p/mjpg-streamer/code/HEAD/tree/

mjpeg项目主页.PNG

目前最新版本为r182,本次测试使用版本r63。

在ubuntu可通过2种命令下载代码:

svn checkout svn://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code

或者

svn checkout https://svn.code.sf.net/p/mjpg-streamer/code/ mjpg-streamer-code

在编译前需要对源码的Makefile做以下修改:
将源码的所有Makefile(包含其子目录)中的编译工具链修改为米尔开发板的编译工具链,由于在终端执行命令. /opt/st/myir/3.1-snapshot/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi会设置好交叉编译相关的环境变量,因此去掉Makefile文件中的CC 即可。

本次测试只需要 input_uvc.so 和 output_http.so,在主目录中的Makefile里面只选择这两个,其它的去掉。

插件input_uvc依赖jpeg,因此修改plugins/input_uvc/Makefile文件,指定jpeg库头文件路径:

CFLAGS += -I$HOME/stm32mp1/build_jpegsrc.v9d/include 

指定链接jpeg动态库路径:

-ljpeg -L$HOME/stm32mp1/build_jpegsrc.v9d/lib

4mjpeg编译.PNG

编译成功之后,在lib目录会生成如下输入、输出动态库文件:

5mjpeg编译结果.PNG

在mjpg-streamer-r63目录生成mjpg-streamer可执行文件:

6mjpeg编译出app.PNG

查看一下mjpg-streamer文件信息,ARM 32位可执行程序:

8查看mjpeg文件类型.PNG

将上面生成的动态库文件都复制到lib目录:

7复制库.PNG

然后将lib目录里面的文件和mjpg-streamer可执行文件一起打包为app_and_lib.tar.xz,使用SCP命令将它复制到开发板home目录:

9复制文件到开发板.PNG 解压:

10解压文件.PNG 得到如下文件,使用chmod +x mjpg-streamer命令为mjpg-streamer添加可执行权限:

11查看文件夹内容.PNG

四、测试

插入USB UVC摄像头,正确识别到了视频设备:

12插入摄像头查看视频设备.PNG 手动指定一下库路径:

export LD_LIBRARY_PATH=./

执行下列命令启动mjpg-streamer:

./mjpg_streamer -i "input_uvc.so -r 1920x1080" -o "output_http.so -w ./www"

13运行mjpeg.PNG
如果是输出YUV格式的UVC摄像头,则执行命令:

./mjpg_streamer -i "input_uvc.so -y -r 1920x1080" -o "output_http.so -w ./www

查看图片,在浏览器输入:
http://192.168.1.136:8080/?action=snapshot
查看视频,在浏览器输入:
http://192.168.1.136:8080/?action=stream
其中192.168.1.136为开发板IP地址。

视频和抓拍效果如下:

 


 

附录:

MJPG简介:MJPEG全名为 "Motion Joint Photographic Experts Group",是一种视频编码格式,Motion JPEG技术常用与闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,并存储在硬盘上。典型的应用如数字视频记录器等。MJPEG不像MPEG,不使用帧间编码,因此用一个非线性编辑器就很容易编辑。MJPEG的压缩算法与MPEG一脉相承,功能很强大,能发送高质图片,生成完全动画视频等;从另一个角度说,在某些条件下,MJPEG也许是效率最低的编码/解码器之一。MJPEG与MJPG的区别:mjpeg是视频,就是由系列jpg图片组成的视频。

 

还有一款MJPG视频流服务开源软件uStreamer:

µStreamer is a lightweight and very quick server to stream MJPG video from any V4L2 device to the net.

https://github.com/pikvm/ustreamer

uStreamer对比mjpeg-streamer.PNG

 


回复

6319

帖子

0

资源

五彩晶圆(初级)

看来这个输出插件的网站服务器插件很重要

其实,mjpg-streamer 是用插件的形势来完成相关的功能,主程序为 mjpg-streamer, 插件分输入和输出,输入就是取视频的方式,输出就是将内容转出的方式


回复

985

帖子

25

资源

一粒金砂(高级)

Jacktang 发表于 2021-11-22 07:34 看来这个输出插件的网站服务器插件很重要 其实,mjpg-streamer 是用插件的形势来完成相关的功能,主程序 ...


回复

4758

帖子

1

资源

五彩晶圆(中级)

谢谢分享,收藏了!

个人签名

默认摸鱼


回复
您需要登录后才可以回帖 登录 | 注册

最新文章 更多>>
    随便看看
    光纤位移传感器的应用领域及产品特性分析

    随着传感器技术的发展,传感器技术的科技含量越来越高,因其穿透力强且能够取得很好的 ...

    常见的性能检测方法 | 创芯检测

    性能测试一般指的是功能测试,主要测试还设备运用的功能有哪些,就测那些固定参数是否 ...

    国产通用运算放大器MS321V、MS358V、MS324V,瑞盟代理

    MS321V、MS358V、MS324V 是瑞盟科技推出的由单个、两个和四个低压(2.7V 到 5V)轨到 ...

    现场免拆卸的立磨轴承座维修方法

    立磨是集破碎、干燥、粉磨、分级输送于一体,生产效率高,可将块状、颗粒状及粉状原料 ...

    咖啡机水箱水位传感器选购标准

    咖啡机水箱的水位传感器选购标准有什么呢?随着科技的普及越来越多产品的功能会更为完 ...

    电力设备制造厂机器运行数据采集——技术方案

    需求概述 获取企业大车间、小车间,各类机加、焊接、喷涂等等机器的运行数据,上传 ...

    关闭
    站长推荐上一条 1/9 下一条

    About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

    站点相关: 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

    北京市海淀区知春路23号集成电路设计园量子银座1305 电话:(010)82350740 邮编:100191

    电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved
    快速回复 返回顶部 返回列表