树莓派USB摄像头实现⽹络监控(MJPG-Streamer)
⽬录
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 github/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:~ $
或者 通过 git ⽅式 ⽆需解压
git clone  e.coding/fivecc/mjpg-streamer/mjpg-streamer.git
执⾏如下操作
pi@raspberrypi:~ $ sudo apt-get install cmake libjpeg8-dev
pi@raspberrypi:~ $ git clone e.coding/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  输⼊以下命令
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_
见到如下便是成功了
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.实时视频接收
2)  创建⼀个.html ⽂件 就可以访问演员张雯个人资料
index.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;
/
/填你对应的ip和端⼝
img.src = "172.19.8.176:8080/?action=snapshot&n=" + (++imageNr);      var webcam = ElementById("webcam");
webcam.insertBefore(img, webcam.firstChild);
}
function imageOnload() {
this.style.zIndex = imageNr;
while (1 < finished.length) {
var del = finished.shift(); // 删除旧照⽚
veChild(del);
}
finished.push(this);
if (!paused) createImageLayer();
}
一句话赞美油菜花function imageOnclick() {
paused = !paused;
if (!paused) createImageLayer();
}
createImageLayer()
</script>
</body>
</html>
视频效果:缙怎么读