Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >树莓派 USB摄像头 实现网络监控( MJPG-Streamer)

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

作者头像
Fivecc
发布于 2022-11-21 08:16:20
发布于 2022-11-21 08:16:20
3.1K00
代码可运行
举报
文章被收录于专栏:前端ACE前端ACE
运行总次数:0
代码可运行

目录

MJPG简介: 

1.硬件与驱动

    1.1用到的工具材料:

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

2 .安装MJPG-Streamer

3.启动 MJPG-Streamer

 3.1  输入以下命令

3.2参数说明:

   4.实时视频接收

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摄像头设备

         输入以下指令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pi@raspberrypi:~ $ lsusb

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

   或则输入:  

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
pi@raspberrypi:~ $ ls /dev

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

2 .安装MJPG-Streamer

       依次通过以下命令 安装 (直接复制粘贴即可)

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 方式 无需解压

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone  https://e.coding.net/fivecc/mjpg-streamer/mjpg-streamer.git

 执行如下操作

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 $ make
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ sudo make install 
pi@raspberrypi:~/mjpg-streamer-master/mjpg-streamer-experimental $ cd 
pi@raspberrypi:~ $ 

  一路没报错 就安好了

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

Mjpg_streamer.c           /* 主程序主要运行如下几个部分 */ input_init();             /* 输入相关的初始化 */

output_init(); /* 输出相关的初始化 */ input_run(); /* 运行输入函数,采集输入数据*/ output_run(); /* 输出初函数,把数据收集起来通过网络socket发送出去 */

3.启动 MJPG-Streamer

 3.1  输入以下命令

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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参数说明:

 -i "/usr/local/lib/mjpg-streamer/input_uvc.so -n -f 30 -r 1280x720"

-i 输入

       input_uvc.so:UVC输入组件

     -f  30             :表示30帧

     -r 1280*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                                  : 网页输出

         -p 8080                                   :端口   8080

           -d 1000                                   : 时间1S

   4.实时视频接收

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

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

             index.html

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<!DOCTYPE html>
<html>
<head>
<title>实时视频</title>
<style>
     #webcam{
          width: 80%;
          height: 80%;
          display: block;
          margin: 10% auto;
          text-align: center;
          position: relative;
     }
     #webcam img{
         width: 100%;
         height: auto;
         display: block;
         margin: 0 auto;
     }
</style>
</head>
<body>

<div id="webcam">
     <div>
     </div>
</div>

<script type="text/javascript">
    var imageNr = 0; // 图片的索引号
    var finished = new Array(); // 下载图片的队列
    var paused = false; //
     
    function createImageLayer() {
      var img = new Image();
      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);
      var webcam = document.getElementById("webcam");
      webcam.insertBefore(img, webcam.firstChild);
    }
     
     
    function imageOnload() {
      this.style.zIndex = imageNr; 
      while (1 < finished.length) {
        var del = finished.shift(); // 删除旧照片
        del.parentNode.removeChild(del);
      }
      finished.push(this);
      if (!paused) createImageLayer();
    }
     
    function imageOnclick() { 
      paused = !paused;
      if (!paused) createImageLayer();
    } 
    createImageLayer() 
</script>
</body>
</html>

视频效果:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-03-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
「玩转树莓派」搭建智能家居远程监控系统
前几天,在食堂吃饭,本来每天中午的新闻三十分换成了视频监控。我们已经习惯了,前十分钟看着领导都很忙,中间十分钟中国人民都很幸福,后十分钟别的国家都生活在水深火热里,顺便跟同事谈谈国家大事。突然主角换成了我们自己,便毫无抬头的欲望。
小柒2012
2019/12/09
3.3K0
「玩转树莓派」搭建智能家居远程监控系统
Mjpg-Streamer+Node.js实现在树莓派上的监控与拍照
最近在做一个机器人项目,需要将试试捕获安装于机器人身上的视频图像,并能够对机器人进行无线运动控制。作为前端工程师的我,很自然的想到了使用Node作为服务器和机器人的控制中心,通过前端页面实现对机器人控制和视频图像的捕捉。
vincentKo
2022/09/19
2.2K0
Mjpg-Streamer+Node.js实现在树莓派上的监控与拍照
树莓派/PC实现实时摄像头数据共享—最优方法(搭建网络摄像头)
方法一:Python+OpenCv实现树莓派数据采集,树莓派搭建服务器,PC机作为客户端实现数据传输,结果发现传输画质太差。
不脱发的程序猿
2021/01/20
7.5K2
荔枝派Zero(全志V3S)驱动开发之USB摄像头
上一篇博客实现了在ubuntu打开usb摄像头,也确认了 usb 摄像头支持 UVC,这节我们将 usb 驱动移植到荔枝派开发板上,并实现拍照的功能以及做 mjpeg-streamer 视频流服务器测试。
Gnep@97
2023/08/10
7960
荔枝派Zero(全志V3S)驱动开发之USB摄像头
利用全志H616 MangoPi MQ Quad部署一个网络摄像头
考虑到芒果派MangoPi MQ Quad开发板SoC较强的处理能力,直接在板子上编译安装mjpg-streamer。
阿志小管家
2024/02/02
1980
利用全志H616 MangoPi MQ Quad部署一个网络摄像头
手把手教你视频监控之 MJPG-Streamer 方案
https://www.100ask.net/detail/p_5f0fc9e9e4b0ee0b8872c2c3/6
Jasonangel
2021/07/07
2.6K0
机器视觉:用图像驱动智能小车
本文主要探索了使用机器视觉技术实现智能小车控制的方法。通过实时获取摄像头图像,并利用直方图计算图像相似度,识别出小车所处的环境。当环境变化时,例如环境中的颜色或物体,通过闪光灯发出提示,并通过颜色识别算法确定小车所处环境。如果需要小车执行特定操作,例如启动或停止,可以通过控制台发送指令实现。同时,为了提高系统的可靠性,可以使用多摄像头进行3D视觉和环境感知,通过实时图像处理提高系统的准确性和稳定性。该系统可以应用于自动驾驶、智能农业、智能物流等领域。
企鹅号小编
2017/12/28
1.9K0
机器视觉:用图像驱动智能小车
树莓派3B+ python 实时监控(USB摄像头)并显示
  执行后会 延时10帧 拍摄 (给个准备时间)产生 一张 名称为  test 的图片
Fivecc
2022/11/21
1.3K0
树莓派3B+ python 实时监控(USB摄像头)并显示
菜鸟手册(2):给Jetson Nano安装树莓派摄像头
因为JetBot上用的是树莓派摄像头,所以我们也首选考虑使用树莓派摄像头,当然USB摄像头是亲测可用的。
GPUS Lady
2019/05/07
16.5K1
菜鸟手册(2):给Jetson Nano安装树莓派摄像头
Linux下使用libuvc读取控制USB免驱摄像头
libuvc是一个开源的库,用于在Linux和其他操作系统上与USB视频设备进行交互。提供了一组函数和接口,使开发人员可以轻松地访问和控制USB摄像头。
DS小龙哥
2023/09/15
2.3K0
USB摄像头APP,能同时打开2个的那种
今天要介绍的是一款安卓手机外接USB摄像头APP软件。软件功能比较全面,实在是值得使用体验下。
小驰行动派
2024/12/10
4440
USB摄像头APP,能同时打开2个的那种
视频监控之 ffmpeg + nginx + rtmp/httpflv
通过上一篇文章,我们实现了了局域网内 MJPG-Streamer 的物联网监控方案,今天带领大家完成《ffmpeg + nginx + rtmp/httpflv》的公网视频监控。
Jasonangel
2021/07/07
3.9K0
ubuntu打开usb摄像头
1、保持在 ubuntu 界面,插上 usb 摄像头,将 usb 摄像头连接到虚拟机上。
Gnep@97
2023/08/10
2.2K0
ubuntu打开usb摄像头
树莓派自建 NAS 云盘之——树莓派搭建网络存储盘
我将在接下来的这三篇文章中讲述如何搭建一个简便、实用的 NAS 云盘系统。我在这个中心化的存储系统中存储数据,并且让它每晚都会自动的备份增量数据。本系列文章将利用 NFS 文件系统将磁盘挂载到同一网络下的不同设备上,使用 Nextcloud 来离线访问数据、分享数据。
星哥玩云
2022/07/24
5.7K0
树莓派自建 NAS 云盘之——树莓派搭建网络存储盘
Python+Opencv读取高帧率USB摄像头问题
前几次使用Python+Opencv,对网络摄像头,USB摄像头进行数据采集,基本流程已经跑通,没什么大问题。最近项目中使用了一款120fps/s的USB摄像头,但是调试好代码运行后,问题来了。
虫无涯
2023/01/17
3.1K0
Jetson上调用多个USB摄像头的方法
日前有朋友在 Xavier Orion 上要调用3个USB摄像头,发现只能正常启动2个,感到有些困扰,是否Jetson设备有数量限制? 其实问题的症结在于这位朋友使用OpenCV的方式调用,这种方式虽然上手容易,但是对资源消耗程度比较大,也需要开发者对摄像头一些硬件参数有足够深入的掌握,否则出错率较高。 为了协助更多开发者能有效用起Jetson上的计算资源,这里提供两种能同时调用4个不同规格USB摄像头的方法: 1. 使用英伟达”Hello AI World” 项目的videoSource()函数: 项目
GPUS Lady
2022/05/12
2.9K0
Jetson上调用多个USB摄像头的方法
树莓派控制摄像头_树莓派连接摄像头
树莓派外接摄像头,最常用的有两种:CSI摄像头、USB摄像头。当然网络摄像头也是可以的。
全栈程序员站长
2022/11/07
3.1K0
树莓派控制摄像头_树莓派连接摄像头
Jetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示
本文介绍了如何使用Jetson TX1开发板通过V4L2和OpenCV3.1实现USB摄像头图像的采集和实时显示。首先介绍了V4L2的基础知识和摄像头驱动配置,然后介绍了OpenCV的图像解码和显示功能。最后,通过具体的示例代码展示了如何编译和运行程序,并总结了程序的结果。
Jack_Cui
2018/01/08
4.8K0
Jetson TX1开发笔记(六):V4L2+OpenCV3.1以MJPG格式读取USB摄像头图像并实时显示
把树莓派装进Apple iSight,图像质量堪比MacBook内置摄像头
疫情期间大家纷纷开始在家办公,不得不买个摄像头在家用。本文作者也买了一个,这也是他进入21世纪以来买的第一个摄像头。
大数据文摘
2020/09/08
1.1K0
把树莓派装进Apple iSight,图像质量堪比MacBook内置摄像头
树莓派摄像头基于 Motion 接入 HomeAssistant
前 4 天分别介绍了 ESP32-CAM 和 USB 摄像头接入 HomeAssistant 的方式,手里还有一个树莓派官方摄像头
远哥制造
2023/09/20
1.1K0
树莓派摄像头基于 Motion 接入 HomeAssistant
推荐阅读
相关推荐
「玩转树莓派」搭建智能家居远程监控系统
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档