USB摄像头MJPG实现网络摄像头

USB摄像头MJPG实现网络摄像头

感谢大佬的分享:https://blog.csdn.net/qq_41923622/article/details/88366185

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

MJPG和YUV的区别:
YUV(原始数据)我们的普通摄像头一般只有两种图像数据输出,分别是YUV(原始数据)、MJPEG两者格式,其中当设置YUV格式,对于大分辨率时,其输出帧率很低,例如自己用amcap输出1080p高清分辨率的帧率只有4、5帧,但是当设置为mjpeg格式时,输出的帧率可以达到30帧左右为什么会有这种差别呢?

1.硬件和驱动

1.1用到的工具

ubuntu20.04
PC电脑
USB摄像头

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

输入指令:lsusb
查看usb摄像头信息
或者输入:ls /dev
查看是否存在video设备,只有一个设备默认video0

2.安装MJPG-Streamer

依次通过以下命令安装(直接复制粘贴即可)
通过git方式安装
git clone  https://e.coding.net/fivecc/mjpg-streamer/mjpg-streamer.git
cd mjpg-streamer
cd mjpg-streamer-experimental 
make 
sudo make install 
这样就安装好了

3.启动MJPG-Streamer

3.1输入命令

mjpg_streamer -i “input_uvc.so -r 640x480 -f 10 -d /dev/video0 -y” -o “output_http.so -p 8080 -w /www”
输入有响应就是成功了

3.2参数说明:

mjpg_streamer -i “input_uvc.so -r 640x480 -f 10 -d /dev/video0 -y” -o “output_http.so -p 8080 -w /www”

-i 输入

   input_uvc.so:UVC输入组件

 -f  30             :表示30-r 1280*720     :分辨率

 -y                   :YUV格式输入(有卡顿),不加表示MJPG输入(需要摄像头支持)

 -o 输出

  output_http.so          :网页输出组件

  -w www                                  : 网页输出

 -p 8080                                   :端口   8080

 -d 1000                                   : 时间1S

4.实时视频接收
创建一个.html 文件 就可以访问
javascript.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>

可以直接打开网址 http://:/javascript.html

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值