远程视频监控(二):MJPG-Streamer方案

一:概述

1、MJPG-Streamer介绍

(1)Mjpg‐streamer是一个开源软件,用于从摄像头采集图像,它将JPEG帧从一个或多个输入插件复制到多个输出插件。它可用于通过基于IP的网络将JPEG文件从网络摄像头流式传输到各种类型的查看器,如Chrome,Firefox,Cambozola,VLC,mplayer和其他能够接收MJPG流的软件。

(2)它最初是为嵌入式设备编写的,在RAM和CPU方面资源非常有限。其前身“uvc_streamer”的创建是因为Linux-UVC兼容相机直接生成JPEG数据,即使是运行OpenWRT的嵌入式设备,也可以实现快速和流畅的M-JPEG流。输入模块“input_uvc.so”从连接的网络摄像头捕获这样的JPG帧。mjpg-streamer现在支持各种不同的输入设备

2、JPEG、MJPG介绍

JPEG

  • 简称JPG
  • 上过美术课的人都知道一个象素的颜色可以用RGB三原色来表示,其实还可以用YUV格式来表示
  • 使用RGB、YUV的格式编码的照片,文件都很大,比如常见的BMP文件就是用RGB编码
  • 把一个BMP文件转换为JPEG文件,可以发现图片质量没发生变化,但是文件变小了很多
  • JPEG是根据人体视觉的特点采用了YCbCr格式,大大压缩了照片的大小

MJPG

  • Motion JPEG,简称MJPG
  • JPEG是静态图片的编码格式,MJPG是动态的视频编码格式
  • 可以简理解:MJPG就是把多个JPEG图片连续显示出来

MJPG优点

  • 很多摄像头本身就支持JPEG、MJPG,所以处理器不需要做太多处理
  • 一般的低性能处理器就可以传输MJPG视频流

MJPG缺点

  • MJPG只是多个JPEG图片的组合,它不考虑前后两帧数据的变化,总是传输一帧帧图像:传输带宽要求高
  • H264等视频格式,会考虑前后两帧数据的变化,只传输变化的数据:传输带宽要求低

二:编译MJPG-Streamer

mjpg-streamer的移植需要jpeg的库,所以我们先移植jpeg的库 ,即需要libjpeg

1、jpeg编译

  1. ./configure --host=arm-himix100-linux --prefix=/home/zhaotiejun/tools/output-files --enable-shared --enable-static
  2. make
  3. make install

2、mjpg-streamer编译

下载源码地址:https://sourceforge.net/projects/mjpg-streamer/

(1)其解压目录中有:doc  mjpeg-client  mjpg-streamer  mjpg-streamer-experimental  udp_client  uvc-streamer

远程视频监控(二):MJPG-Streamer方案

mjpg-streamer :目录下提供了 的执行程序和各个输入输出设备组件 
uvc-streamer :目录下提供了 uvc-streamer的可执行目录 
mjpeg-client:分别有 linux和windows 的客户端 

(2)修改顶层目录mjpg-streamer下的Makefile

远程视频监控(二):MJPG-Streamer方案

远程视频监控(二):MJPG-Streamer方案

(3)修改上文配置文件中用到的input.uvcoutput_http插件对应的Makefile

远程视频监控(二):MJPG-Streamer方案

input.uvc:

远程视频监控(二):MJPG-Streamer方案

output_http:

远程视频监控(二):MJPG-Streamer方案

(4)提前在Makefile的指定生成路径/home/zhaotiejun/tools/files/mjpg-streamer/mjpg-streamer-code-r182/output中创建一下三个文件夹

远程视频监控(二):MJPG-Streamer方案

  1. make
  2. make install

远程视频监控(二):MJPG-Streamer方案

至此input*.so、 output*.so 和 mjpg_streamer 可执行文件均已生成。

三:运行测试

1、将生成的bin、lib、www文件全部拷贝到ARM板上

2、设置ARM板与PC或者手机在同一个局域网内

3、执行命令:mjpg_streamer -i "input_uvc.so -d /dev/video1 -f 30 -q 90 -n" -o "output_http.so -w www"(注意文件路径)

4、假设ARM板IP地址为192.168.1.100

5、在chrome浏览器中打开:“http://192.168.1.100:8080/stream.html”就可以看见视频了

四:MJPG-streamer框架

远程视频监控(二):MJPG-Streamer方案

 

上一篇:JPEG原理分析及JPEG解码器的调试


下一篇:如何将PDF转换为 JPEG呢?