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

目录

前言

一、JPEG,MJPG格式简介

JPEG

MJPG

MJPG的优点

MJPG的缺点

二、软硬件准备

三、编译MJPG-streamer

四、运行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/

烧写.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打开来进行分析

韦老师对于MJPG-streame的分析,适合初学者学习,我们可以清晰的看出每个关键函数的调用关系,涉及到网络编程、多线程等知识。
这里我比较关注的是图中右下角client线程的部分,在观察源码后我知道,它是对于每一个client的连接都会创建一个client线程去处理。

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

七、源码下载

MJPG-streamer源码

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/187933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RubyMine 2023 年下载、安装、使用教程,详细图解

大家好,今天为大家带来的是RubyMine 2023 年下载、安装、使用教程,详细图解。 文章目录 1 RubyMine 简介2 RubyMine 下载、安装教程RubyMine 下载RubyMine 安装 3 RubyMine 汉化4. 常用快捷键一级必会二级进阶 1 RubyMine 简介 RubyMine 是一个为 Ruby …

什么是企业资金

我从两个方面来诠释企业资金管理: 1、企业资金管理是什么? 2、企业资金管理包括什么? 一、企业资金管理是什么? 众所周知,每个企业都有对应的财务部门,专门负责管理企业的“钱”,和企业的“帐…

决策树(Classification and Regression Tree)

学了数据结构的树后,一直没发现树有哪些应用。学而时习(实践)之,不亦说乎?故特地上网查了查树的应用,在下阐释: 1.文件系统:文件和目录的组织通常以树的形式表示,允许高效…

前端项目中获取浏览器版本的方法

在我们的前端项目中,navigator.userAgent属性含有当前浏览器相关信息(比如版本号)。 所以当我们想要获取用户当前访问的浏览器的版本时直接去解析navigator.userAgent字段就中。 废话不多说,下面看封装的获取浏览器版本的函数&am…

亚马逊云与生成式 AI 的融合——生成式AI的应用领域

文章目录 前言亚马逊云科技增强客户体验聊天机器人和虚拟助手亚马逊云科技 鸿翼:提供精准检索和问答,显著提升全球化售后服务体验AI 赋能的联络中心智能导购&个性化推荐智慧数字人 提升员工生成力和创造力对话式搜索亚马逊云科技 西门子&#xff1…

论文精读 Co-DETR(Co-DINO、Co-Deformable-DETR)

DETRs with Collaborative Hybrid Assignments Training 基于协作混合分配训练的DETRs 论文链接:2211.12860.pdf (arxiv.org) 源码链接:https://github.com/Sense-X/Co-DETR 总结: Co-DETR基于DAB-DETR、Deformable-DETR和DINO网络进行了实…

观测云产品更新 | 监控、数据脱敏、快照分享等优化

观测云更新 监控 1、监控器 - 事件内容插入链接的联动优化:根据检测指标自动生成跳转链接,支持在插入链接后调整过滤条件和时间范围,您也可以自定义跳转链接。其中,若需要插入跳转到仪表板的链接,基于以上逻辑&#…

UniGUI官方Demo打开慢的问题

C:\Program Files (x86)\FMSoft\Framework\uniGUI\Demos\Desktop\AllFeaturesDemo\mdemo.dproj 运行时浏览器加载慢由于Demo中访问了Google服务器,导致了浏览器加载慢,将Demo中Google服务器地址删除即可https://maps.googleapis.com/maps/api/js?sensor…

【渗透】记录阿里云CentOS被渗透攻击

文章目录 发现排查安装Nethogs查询情况 最终方案 发现 流量异常,出现大流量,网络贷带宽占满情况 排查 安装Nethogs 1.1 Nethogs介绍 NetHogs是一个开源的命令行工具(类似于Linux的top命令),用来按进程或程序实时统…

智能优化算法应用:基于乌鸦算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于乌鸦算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于乌鸦算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.乌鸦算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

ruoyi+Hadoop+hbase实现大数据存储查询

前言 有个现实的需求,数据量可能在100亿条左右。现有的数据库是SQL Server,随着采集的数据不断的填充,查询的效率越来越慢(现有的SQL Server查询已经需要数十秒钟的时间),看看有没有优化的方案。 考虑过S…

HTML——表单详解

表单元素 一、表单的用途 HTML 表单用于收集用户的输入信息。 HTML 表单表示文档中的一个区域,此区域包含交互控件,将用户收集到的信息发送到 Web 服务器。 一个表单有三个基本组成部分: 表单标签:这包含了处理表单数据所用的…

成都理工大学校园《我想假如在这里度过大学生活》火了

近日,网上一篇关于成都理工大学校园环境的《我想假如在这里度过大学生活》火了。文章中的提到的大学环境优美,诗意盎然。一则则假如,带我们领略了校园风光,同时也感受到了大学时代的美好。 美丽的图书馆、阳光明媚的操场&#xff…

训练 CNN 对 CIFAR-10 数据中的图像进行分类-keras实现

1. 加载 CIFAR-10 数据库 import keras from keras.datasets import cifar10# 加载预先处理的训练数据和测试数据 (x_train, y_train), (x_test, y_test) cifar10.load_data() 2. 可视化前 24 个训练图像 import numpy as np import matplotlib.pyplot as plt %matplotlib …

csapp-linklab之第4阶段“输出学号”实验报告(switch跳转表)

实验内容 修改phase4.o相应节中的内容,使其与main.o链接后运行能够输出自己的学号: $ gcc -o linkbomb main.o phase4.o $ ./linkbomb $学号 实验提示 掌握switch语句的机器语言表示及其跳转表的实现。 找出跳转表 反汇编phase4.o,看看里…

el-table实现动态表头

1.1el-table渲染 <el-tableref"refreshTable":data"tableData"highlight-current-row><el-table-columnfixedwidth"170px"label"测点"align"center"prop"测站名称"/><el-table-column label"…

浅谈安科瑞可编程电测仪表在老挝某项目的应用

摘要&#xff1a;本文介绍了安科瑞多功能电能表在老挝某项目的应用。AMC系列交流多功能仪表是一款专门为电力系统、工矿企业、公用事业和智能建筑用于电力监控而设计的智能电表。 Abstract&#xff1a;This article introduces the application of the multi-function energy …

深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等

文章目录 1、卷积神经网络&#xff08;Convolutional Neural Networks&#xff0c;CNN&#xff09;1.1 优点1.2 缺点1.3 应用场景1.4 网络图 2、循环神经网络&#xff08;Recurrent Neural Networks&#xff0c;RNNs&#xff09;2.1 优点2.2 缺点2.3 应用场景2.4 网络图 3、长短…

L1-010:比较大小

题目描述 本题要求将输入的任意3个整数从小到大输出。 输入格式: 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式: 在一行中将3个整数从小到大输出&#xff0c;其间以“->”相连。 输入样例: 4 2 8输出样例: 2->4->8 程序代码 #include<stdio.h&…

基于YOLOv8深度学习的安全帽目标检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好&#xff0c;我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源&#xff0c;可关注公-仲-hao:【阿旭算法与机器学习】&#xff0c;共同学习交流~ &#x1f44d;感谢小伙伴们点赞、关注&#xff01; 《------往期经典推…