MJPG-streamer方案实现物联网视频监控

简介: MJPG-streamer方案实现物联网视频监控

前言

最近想做一个安防相关的项目,所以跟着韦东山老师的视频来学习视频监控方案的相关知识,韦东山老师讲的课非常好,这里用到的开发板是IMX6ULL


一、JPEG,MJPG格式简介

JPEG

  • 简称JPG
  • 上过美术课的人都知道一个象素的颜色可以用RGB三原色来表示,其实还可以用YUV格式来表示使用RGB、YUV的格式编码的照片,文件都很大,比如常见的BMP文件就是用RGB编码
  • 把一个BMP文件转换为JPEG文件,可以发现图片质量没发生变化,但是文件变小了很多
  • JPEG是根据人体视觉的特点采用了YCbCr格式,大大压缩了照片的大小

MJPG

  • Motion JPEG,简称MJPG
  • JPEG是静态图片的编码格式,MJPG是动态的视频编码格式
  • 可以简理解:MJPG就是把多个JPEG图片连续显示出来

MJPG的优点

  • 很多摄像头本身就支持JPEG、MJPG,所以处理器不需要做太多处理
  • 一般的低性能处理器就可以传输MJPG视频流

MJPG的缺点

  • MJPG只是多个JPEG图片的组合,它不考虑前后两数据的变化,总是传输一顿帧图像: 传输带宽要求高
  • H264等视频格式,会考虑前后两顿数据的变化,只传输变化的数据: 传输带宽要求低

二、软硬件准备

硬件:a. 100ASK_IMX6ULL开发板 (或其他Linux开发板);b. USB摄像头

软件:a. Ubuntu;b. Buildroot(Buildroot会自动下载其他软件: MJPG-streamer, ffmpeg, nginx)

三、编译MJPG-streamer

进入Buildroot根目录

执行命令

make menuconfig

/ 搜索 mjpg 查找 MJPG-streamer 位置

选上MJPG-streamer后退出保存

执行命令 make


这会在Buildroot的dl/mjpg-streamer目录下自动下载源码,并编译


结果保存在output/images目录下,有emmc.img, sdcard.img,可以直接烧写到板能的EMMC或SD卡上


编译后的结果


ls output/images/

19bc36020c26045eb0c00493dd73396a_88ec7d7efaa24a16bad19c6048297601.png

烧写.img后缀到IMX6ULL开发板


四、运行MJPG-streamer

在开发板上安装好MJPG-streamer后,执行命令:

mjpg_streamer -i "/usr/lib/mjpg-streamer/input_uvc.so -d /dev/video1 -f 30 -q 90 -n" -o "/usr/lib/mjpg-streamer/output_http.so -w /usr/share/mjpg-streamer/www"

参数:

// 指定这个库的绝对路径 –i 指定一个输入的动态库 -o 指定另一个输出的动态库


  • -d /dev/video1 -f 30 -q 90 -n”是参数 给input_uvc.so用 处理输入数据
  • -w /usr/share/mjpg-streamer/www“ 是参数 给output_http用 处理输出数据
  • /dev/video1是我所使用的usb摄像头的位置,-f 30 -q 90 指定格式以及质量。


在PC端或手机上:

确保PC或手机,跟开发板处于同一个局域网

假设开发板IP为:192.168.1.6

在chrome浏览器中打开: http://192.168.1.6:8080/stream.html

就可以看见视频了


五、其它常见用法

查看帮助:


mjpg_streamer -o "/usr/lib/mjpg-streamer/output file.so --help"

mjpg_streamer -i "/usr/lib/mjpg-streamer/input file.so --help"


把摄像头数据存为JPG文件:


从input得到数据 保存到tmp目录


mjpg streamer -i "usr/ib/mjpg-streamer/input uvc.so -d /dev/video1 -f 30 -g 90 -n" -o "/usr/lib/mjpg-streamer/output_file.so -f /tmp"


把JPG文件输出到浏览器:


从tmp目录获得文件发到浏览器


mjpg_streamer -i "usr/lib/mjpg-streamer/input file.so -e -f /tmp" -o "/usr/lib/mjpg-streamer/output http.so -w /usr/share/mjpgstreamer/www"


六、MJPG-streamer 程序框架

buildroot选择MJPG-streamer编译完成后,会得到MJPG-streamer的源码,可以用source insight打开来进行分析

eb892ac18cdb8d8ffc169b46984543a4_db1ab93d1018446491c4cbee456bd986.png

韦老师对于MJPG-streame的分析,适合初学者学习,我们可以清晰的看出每个关键函数的调用关系,涉及到网络编程、多线程等知识。

这里我比较关注的是图中右下角client线程的部分,在观察源码后我知道,它是对于每一个client的连接都会创建一个client线程去处理。


当我访问http://192.168.1.6:8080/stream.html的时候,会创建一个client线程与之对应,处理数据。


七、源码下载

MJPG-streamer源码

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
23天前
|
监控 物联网 应用服务中间件
流媒体方案之Nginx——实现物联网视频监控项目
流媒体方案之Nginx——实现物联网视频监控项目
流媒体方案之Nginx——实现物联网视频监控项目
|
23天前
|
监控 物联网 编解码
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
|
9月前
|
编解码 监控 物联网
【学员源鑫笔记】韦东山物联网流媒体实战项目-智慧家居视频监控系统(值得收藏)
【学员源鑫笔记】韦东山物联网流媒体实战项目-智慧家居视频监控系统(值得收藏)
507 0
|
存储 Cloud Native 安全
物联网课程论文:《基于云原生的物联网端管云系统方案综述与演进设想》
这篇论文八千多字,主题是 云原生+物联网平台。花了几天心思,查了很多篇论文,因为自己对物联网通信的硬件方面不太会,所以还是选择写综述类的论文了,这篇论文感觉技术深度和广度比我上一篇计算机网络论文要更加深刻一点。
物联网课程论文:《基于云原生的物联网端管云系统方案综述与演进设想》
|
物联网
《物联网专场-远程养老看护方案》电子版地址
物联网专场-远程养老看护方案
108 0
《物联网专场-远程养老看护方案》电子版地址
|
8天前
|
传感器 存储 机器学习/深度学习
物联网(IoT)简介:定义、技术与应用
【5月更文挑战第30天】物联网(IoT)是将物品通过嵌入式系统、传感器及通信技术连接至互联网,实现物物、物人交互和数据共享的技术。其关键包括传感器、通信、嵌入式系统、云计算和人工智能技术。物联网应用于智能家居、智慧城市、工业自动化、农业和健康医疗等领域,通过Arduino等平台可实现简单数据传输。随着技术发展,物联网将深远影响人们生活和工作方式。
48 3
|
2天前
|
供应链 物联网 分布式数据库
未来技术的浪潮:区块链、物联网和虚拟现实的融合与创新
【6月更文挑战第4天】随着科技的不断进步,新兴技术如区块链、物联网和虚拟现实正在逐渐改变我们的生活和工作方式。这些技术的发展趋势和应用场景不仅令人兴奋,也引发了许多有趣的讨论。本文将探讨这些新兴技术的发展趋势,并分析它们在未来可能的应用场景。
|
4天前
|
传感器 物联网 区块链
新兴技术的未来展望:区块链、物联网与虚拟现实的融合
【6月更文挑战第3天】在科技飞速发展的今天,新兴技术如区块链、物联网和虚拟现实正不断重塑我们的生活和工作方式。本文将探讨这些技术的发展趋势,并分析它们如何相互融合,创造出新的应用场景和商业模式。
|
5天前
|
物联网 云计算 传感器
物联网与云计算:天作之合的技术搭档
【6月更文挑战第2天】物联网与云计算协同创造智能世界:物联网如网,连接万物,收集海量数据;云计算似云,提供强大计算力,分析数据,挖掘价值。两者结合,应用于智能家居、工业制造、医疗健康、智能交通等领域,推动数字化转型。代码示例展示物联网数据上传云端过程。未来,随着技术进步,二者的融合将深化,引领更多创新应用,促进社会福祉和进步。
25 5
|
7天前
|
Cloud Native 物联网 持续交付
未来科技浪潮:区块链、物联网与虚拟现实的融合创新云原生技术:重塑IT架构的未来
【5月更文挑战第31天】在信息技术飞速发展的今天,新兴技术如区块链、物联网和虚拟现实等正成为推动社会进步的重要力量。本文将探讨这些技术的发展趋势及其在各领域的应用前景,揭示它们如何相互融合,共同塑造一个智能化、互联的未来世界。 【5月更文挑战第31天】本文深入探讨了云原生技术的兴起及其对传统IT架构的颠覆性影响。通过分析云原生的核心概念,如微服务、容器化、以及持续集成/持续部署(CI/CD),文章揭示了这些技术如何促进更高效、灵活和可扩展的软件开发实践。同时,本文还讨论了企业在采用云原生技术时面临的挑战与机遇,并展望了云原生技术在未来IT领域的发展趋势。

热门文章

最新文章