树莓派 USB摄像头 实现网络监控( MJPG-Streamer)

简介: MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名.   MJPEG   全名为 “Motion Joint Photographic Experts Group”,是一种视频编码格式,   Motion JPEG技术常用与闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,并存储在硬盘上。典型的应用如数字视频记录器等。MJPEG不像MPEG,不使用帧间编码,因此用一个非线性编辑器就很容易编辑。MJPEG的压缩算法与MPEG一脉相承,功能很强大,能发送高质图片,生成完全动画视频等

MJPG简介:

  MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名.

  MJPEG

  全名为 “Motion Joint Photographic Experts Group”,是一种视频编码格式,

  Motion JPEG技术常用与闭合电路的电视摄像机的模拟视频信号“翻译”成视频流,并存储在硬盘上。典型的应用如数字视频记录器等。MJPEG不像MPEG,不使用帧间编码,因此用一个非线性编辑器就很容易编辑。MJPEG的压缩算法与MPEG一脉相承,功能很强大,能发送高质图片,生成完全动画视频等。但相应地,MJPEG对带宽的要求也很高,相当于T-1,MJPEG信息是存储在数字媒体中的庞然大物,需要大量的存储空间以满足如今多数用户的需求。因此从另一个角度说,在某些条件下,MJPEG也许是效率最低的编码/解码器之一。

  MJPEG 是 24-bit 的 “true-color” 影像标准,MJPEG 的工作是将 RGB 格式的影像转换成 YCrCB 格式,目的是为了减少档案大小,一般约可减少 1/3 ~ 1/2 左右。

  MJPEG与MJPG的区别:

  1、mjpeg是视频,就是由系列jpg图片组成的视频。

  2、MJPG是MJPEG的缩写,但是MJPEG还可以表示文件格式扩展名.

1.硬件与驱动

   1.1用到的工具材料:

  •      树莓派3B+
  •      PC电脑
  •      USB摄像头

 1.2检查是否存在USB摄像头设备

输入以下指令:

pi@raspberrypi:~ $ lsusb

可以看到usb摄像头的一些信息。见红框;

网络异常,图片无法展示
|

或则输入:  

pi@raspberrypi:~ $ ls /dev

可以看到 红框中有 video0 设备 也可以说明 usb摄像头 正常运行

网络异常,图片无法展示
|

2 .安装MJPG-Streamer

 依次通过以下命令 安装

(直接复制粘贴即可)

pi@raspberrypi:~ $ sudo apt-get install cmake libjpeg8-dev
pi@raspberrypi:~ $ wget https://github.com/Five-great/mjpg-streamer/archive/master.zip
pi@raspberrypi:~ $  unzip mjpg-streamer-master.zip
pi@raspberrypi:~ $ cd mjp*g-*
pi@raspberrypi:~/mjpg-streamer-master $ cd mjpg-*
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ make
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ sudo make install 
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ cd home
pi@raspberrypi:~ $

若上面的包源已经发生变化 可前往https://fivecc.coding.net/public/mjpg-streamer/mjpg-streamer/git 查看,

直链下载:https://fivecc.coding.net/p/mjpg-streamer/d/mjpg-streamer/git/archive/master/?download=true 并解压

  或者 通过 git 方式 无需解压

git clone  https://e.coding.net/fivecc/mjpg-streamer/mjpg-streamer.git

接着执行如下操作

pi@raspberrypi:~ $ sudo apt-get install cmake libjpeg8-dev
pi@raspberrypi:~ $ git clone https://e.coding.net/fivecc/mjpg-streamer/mjpg-streamer.git
pi@raspberrypi:~ $ cd mjpg-*
pi@raspberrypi:~/mjpg-streamer-master $ cd mjpg-*
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ makepi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ sudomake install 
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ cdpi@raspberrypi:~ $

 一路没报错  哪就恭喜了🎉 就安装好了,成功了一半了

下面我们先来分析一下mjpg_streamer这个功能的结构:

Mjpg_streamer.c/*主程序主要运行如下几个部分*/input_init();             /*输入相关的初始化*/output_init(); /*输出相关的初始化*/input_run(); /*运行输入函数,采集输入数据*/output_run(); /*输出初函数,把数据收集起来通过网络socket发送出去*/

3.启动 MJPG-Streamer

3.1  输入以下命令

pi@raspberrypi: ~ $ /usr/local/bin/mjpg_streamer -i"/usr/local/lib/mjpg-streamer/input_uvc.so -n -f 30 -r 1280x720"-o"/usr/local/lib/mjpg-streamer/output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"

  😅注意有点长 注意细节!!!

 见到如下便是成功了

网络异常,图片无法展示
|

3.2参数说明:

input_uvc.so:UVC输入组件
-f30             :表示30帧
-r1280*720     :分辨率
-y                   :YUV格式输入(有卡顿),不加表示MJPG输入(需要摄像头支持)
-o"/usr/local/lib/mjpg-streamer/output_http.so -p 8080 -w /usr/local/share/mjpg-streamer/www"-o 输出
         output_http.so          :网页输出组件
-w www                  : 网页输出
-p8080                 :端口   8080-d1000                 : 时间1S

4.实时视频接收

1)可以直接打开网址 http://<树莓派ip>:<port>/javascript.html

        javascript.html 原则上不可变动,这是mjpg-streamer 默认提供web端的视频流的页面)

视频效果:

网络异常,图片无法展示
|

 

2)  创建一个html 文件 就可以访问

html 文件大概如下

<!DOCTYPE html><html><head><title>实时视频</title><style>#webcam{
width: 80%;
height: 80%;
display: block;
margin: 10%auto;
text-align: center;
position: relative;
     }
#webcamimg{
width: 100%;
height: auto;
display: block;
margin: 0auto;
     }
</style></head><body><divid="webcam"><div></div></div><scripttype="text/javascript">varimageNr=0; // 图片的索引号varfinished=newArray(); // 下载图片的队列varpaused=false; //functioncreateImageLayer() {
varimg=newImage();
img.style.position="absolute";
img.style.zIndex=-1;
img.onload=imageOnload;
img.onclick=imageOnclick;
//填你对应的ip和端口img.src="http://172.19.8.176:8080/?action=snapshot&n="+ (++imageNr);
varwebcam=document.getElementById("webcam");
webcam.insertBefore(img, webcam.firstChild);
    }
functionimageOnload() {
this.style.zIndex=imageNr; 
while (1<finished.length) {
vardel=finished.shift(); // 删除旧照片del.parentNode.removeChild(del);
      }
finished.push(this);
if (!paused) createImageLayer();
    }
functionimageOnclick() { 
paused=!paused;
if (!paused) createImageLayer();
    } 
createImageLayer() 
</script></body></html>

视频效果:

网络异常,图片无法展示
|

以上就是 【树莓派 USB摄像头 实现网络监控( MJPG-Streamer)】的全部内容了, 欢迎点赞分享

目录
相关文章
|
2月前
|
Ubuntu
树莓派 —— ubuntu上通过netplan配置网络
树莓派 —— ubuntu上通过netplan配置网络
|
3月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的USB摄像头实时视频采集与水果识别matlab仿真
本项目展示了使用MATLAB 2022a和USB摄像头识别显示器上不同水果图片的算法。通过预览图可见其准确识别效果,完整程序无水印。项目采用GoogleNet(Inception-v1)深度卷积神经网络,利用Inception模块捕捉多尺度特征。代码含详细中文注释及操作视频,便于理解和使用。
|
3月前
|
机器学习/深度学习 数据采集 算法
基于深度学习网络的USB摄像头实时视频采集与火焰检测matlab仿真
本项目使用MATLAB2022a实现基于YOLOv2的火焰检测系统。通过USB摄像头捕捉火焰视频,系统实时识别并标出火焰位置。核心流程包括:视频采集、火焰检测及数据预处理(图像标准化与增强)。YOLOv2模型经特定火焰数据集训练,能快速准确地识别火焰。系统含详细中文注释与操作指南,助力快速上手。
|
5月前
|
机器学习/深度学习 算法 计算机视觉
基于深度学习网络的USB摄像头实时视频采集与人脸检测matlab仿真
**摘要 (Markdown格式):** ```markdown - 📹 使用USB摄像头(Tttttttttttttt666)实时视频检测,展示基于YOLOv2在MATLAB2022a的实施效果: ``` Tttttttttttttt1111111111------------5555555555 ``` - 📺 程序核心利用MATLAB视频采集配置及工具箱(Dddddddddddddd),实现图像采集与人脸定位。 - 🧠 YOLOv2算法概览:通过S×S网格预测边界框(B个/网格),含坐标、类别概率和置信度,高效检测人脸。
|
4月前
|
机器学习/深度学习 算法 BI
基于深度学习网络的USB摄像头实时视频采集与手势检测识别matlab仿真
**摘要:** 本文介绍了使用MATLAB2022a实现的基于GoogLeNet的USB摄像头手势识别系统。系统通过摄像头捕获视频,利用深度学习的卷积神经网络进行手势检测与识别。GoogLeNet网络的Inception模块优化了计算效率,避免过拟合。手势检测涉及RPN生成候选框,送入网络进行分类。系统架构包括视频采集、手势检测与识别、以及决策反馈。通过GPU加速和模型优化保证实时性能,应用于智能家居等场景。
|
4月前
|
Windows
Win10或Win11更新补丁后导致360随身wifi提示USB设备驱动异常,创建Wifi网络失败
Win10或Win11更新补丁后导致360随身wifi提示USB设备驱动异常,创建Wifi网络失败
916 0
|
Ubuntu
树莓派 ubuntu server 22.x 连接无线网络
树莓派 ubuntu server 22.x 连接无线网络
159 0
|
C语言
树莓派已经通过网络连接通过串口通信在串口调试小助手打印与操作
树莓派已经通过网络连接通过串口通信在串口调试小助手打印与操作
272 0
树莓派已经通过网络连接通过串口通信在串口调试小助手打印与操作
|
Web App开发 数据采集 Shell
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)