树莓派 之 USB摄像头 局域网内视频流实时传输( MJPG-Streamer)

简介: 树莓派 之 USB摄像头 局域网内视频流实时传输( MJPG-Streamer)

1.jpg


0. MJPG简介:


MJPG是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还可以表示文件格式扩展名


硬件

●树莓派3B+

●PC电脑

●USB摄像头


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


输入以下指令:


pi@raspberrypi:~ $ lsusb


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


2.png


或则输入:


3.png


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 mjpg-streamer-master
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 


上面的包源已经发生变化,下载并解压或者通过 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 $ 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


输入以下命令


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"


见到如下便是成功了


5.png


参数说明


-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>:/javascript.html

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


<!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>


默认的用户名: pi

密码是: raspberry

目录
相关文章
|
1月前
|
机器学习/深度学习 存储 计算机视觉
开启摄像头传输
这段代码展示了如何使用`ugot`库和`OpenCV`打开摄像头、读取帧数据并保存图像。`open_camera()`打开摄像头,`read_camera_data()`返回解码后的base64图像字符串。在循环中,非空帧被转换为`numpy`数组并显示,首次成功保存为&quot;captured_image.jpg&quot;。当按下&#39;q&#39;键或发生键盘中断时退出。涉及`numpy`的数组操作、`OpenCV`的图像解码及缓冲区处理。
18 2
Win系统 - WIN10 更新后蓝牙音箱无法连接成 Stereo 模式(立体声)
Win系统 - WIN10 更新后蓝牙音箱无法连接成 Stereo 模式(立体声)
857 0
Win系统 - WIN10 更新后蓝牙音箱无法连接成 Stereo 模式(立体声)
|
Linux 网络安全
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
树莓派开发笔记(十一):蓝牙的使用,BlueZ协议(双树莓探测rssi并通过蓝牙互传获取的rssi信号强度)
|
7月前
|
编解码 监控 网络协议
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
Android平台GB28181设备接入侧如何实现按需打开视音频采集传输
120 2
|
7月前
|
监控 网络协议 物联网
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具。modbus master,modbus,串口,工控,物联网,PLC,嵌入式
184 1
优秀的 Modbus 主站(主机、客户端)仿真器、串口调试工具
|
7月前
|
Android开发 开发者
Android平台GB28181设备接入端语音广播如何实现实时音量调节
Android平台GB28181设备接入,语音广播功能非常重要,本文要介绍的,不是语音广播的流程,语音广播流程,之前的blog也有非常详细的分享,感兴趣的可以参考官方规范书的交互流程:
|
8月前
|
监控 网络协议 测试技术
优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具
- 监视串行线路或以太网上的通信数据 - 支持多达 28 种数据格式,包括:Signed、Unsigned、Hex、Binary、Long、Float、Double等 - 支持 Modbus 协议地址和 PLC 地址相互切换 - 对任意数量寄存器中的数据绘制实时图表,监控数据的变化趋势 - 支持同时创建多个连接网络和大量从站设备 - 通过多个标签页进行管理,快速在从站设备之间进行切换 - 通过表格的形式管理寄存器,支持添加变量名和注释,支持切换背景与前景颜色 - 导出/导出从站设备寄存器数据到Excel - 内置字节转换工具,方便将Long、Float、Double类型数据转换为寄存器中的数据
227 0
优秀的 Modbus 从站(从机、服务端)仿真器、串口调试工具
|
8月前
|
Windows 内存技术
实战--虚拟机用ffmpeg采集音频设备,并用rtmp推流
实战--虚拟机用ffmpeg采集音频设备,并用rtmp推流
112 0
|
9月前
|
存储 编解码 缓存
海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
Hik防爆摄像头录像,因为防爆摄像头会有对应的APP软件,与普通的网络摄像头和球机不一样,默认认为它不可以通过web网页配置,所以弄了个来实测确认。经测试实际上也是可以通过web网页配置(与网络摄像头基本是一致的,在码流方面可能会有些不一样),然后提取rtsp流的,界面与球机无异,只是没有球机的云台控制功能,但是界面上也是有的。
海康摄像头开发笔记(一):连接防爆摄像头、配置摄像头网段、设置rtsp码流、播放rtsp流、获取rtsp流、调优rtsp流播放延迟以及录像存储
|
10月前
|
网络协议 JavaScript Python
车载机串口转TCP通信工具稳定版出来啦
车载机串口转TCP通信工具稳定版出来啦