安防监控实现之mjpeg-streamer视频图像的显示
文章目录
- 声明
- 视频服务器—mjpg-streamer
- 概述&系统框图
- MJPG简介
- MJPEG 与 MJPG 的区别
- 关于UVC摄像头
- 查看摄像头的信息
- 移植过程
- 添加驱动编译到内核上
- mjpg-stream 的移植
- jpeg 库的移植
- 移植 mjpg-streamer
- HTML文件
- 错误总结
声明
写在最前面 华清远见教育集团 15年专注高端IT培训 做良心教育,做专业教育,做受人尊敬的职业教育
创客学院官网:http://www.makeru.com.cn/
华清远见创客学院嵌入式课程链接:http://www.makeru.com.cn/emb
华清远见创客学院物联网课程链接:http://www.makeru.com.cn/iot
视频服务器—mjpg-streamer
实现远程视频监控需要视频服务器,于是 mjpg-streamer 这个开源软件变成了我们的选择之一,并且成为我们最终的选择,mjpg-streamer 提供多种输入及输出方式。输入可以是一个 camera 也可以是一个文件,输出可以是一个文件也可以以 HTTP 的方式 输出到远程客户端,这里我们选择的方式是从 camera 中\取数据以 HTTP 的方式发送到远端客户端。远端客户端可以是任何支持 stream 传输的 web 浏览器。
概述&系统框图
UVC摄像头+驱动+JPEG图库+mjpeg-streamer+HTML 完成了对用户远程提供视屏展示的服务。首先底层通过摄像头采集图片,通过驱动将数据流存储到JPEG图库,最终通过html交给用户的浏览器来解析,而mjpeg-streamer用来实现对这一流程的的控制。构成mjpeg-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 的区别
- mjpeg 是视频,就是由系列 jpg 图片组成的视频。
- MJPG 是 MJPEG 的缩写,但是 MJPEG 还可以表示文件格式扩展名.
关于UVC摄像头
免驱动摄像头,是一种遵循视频设备类(USB Video Class,简称UVC)标准协议的摄像头产品。将符合标准的摄像头连接到符合标准的操作系统,系统就会自动为其安装驱动并进行设置,使摄像头实现真正意义上的即插即用。
uvc是一种硬件的框架结构,只有当其是通过一种标准的设计使其实现了免驱;而V4L2是一种驱动程序,其是实现系统与uvc设备等的通信。
https://blog.csdn.net/codectq/article/details/44451237#commentBox
查看摄像头的信息
查看我的摄像头信息,执行dmesg信息打印如下
移植过程
添加驱动编译到内核上
内核选配 添加驱动支持USB储存设备
进入内核目录:cd linux-3.14
执行 #make menuconfigDevice Drivers --->[*] USB support ---><*> EHCI HCD (USB 2.0) support<*> EHCI support for Samsung S5P/EXYNOS SoC Series<*> USB Mass Storage support<*> USB3503 HSIC to USB20 DriverUSB Physical Layer drivers ---><*> Samsung USB 2.0 PHY controller DriverCSI device support ---><*> SCSI device support<*> SCSI disk support
选中 Multimedia support
Device Drivers ---><*> Multimedia support --->如图配置:
再进入 Media USB Adapters
Device Drivers ---><*> Multimedia support ---><*>Media USB Adapters --->如图配置
4. 进入 GSPCA base webcams
Device Drivers ---><*> Multimedia support ---><*>Media USB Adapters ---><*>GSPCA base webcams如图配置
![在这里插入图片描述](https://img-blog.csdnimg.cn/20190710165902303.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly96aHV6aG9uZ3dlaS5ibG9nLmNzZG4ubmV0,size_16,color_FFFFFF,t_70)
进入 V4L platform devices
Device Drivers ---><*> Multimedia support ---><*>V4L platform devices --->如图配置
编译内核
#make uImage重新拷贝到我们的 tftp 目录下
mjpg-stream 的移植
jpeg 库的移植
jpeg 源码包通过下面这个网址下载
http://www.ijg.org/files/jpegsrc.v8b.tar.gz解压源码包
tar xvf jpegsrc.v8b.tar.gz
配置源码
cd jpeg-8b ./configure --prefix=/home/zzw/share/Security_Monitoring/mjpeg-streamer/video/jpegarm --host=arm-none-linux-gnueabi
(注意:–prefix 表示最终生成的库和头文件等存放的目录,自己指定一个存在的路径就可以, 后面编译 mjpeg-streamer
的时候回用到,此处必须使用绝对路径,–host=arm-none-linux-gnueabi
–host 表示生成的库的运行平台,注意是两个 - ,末尾不能加- ,./configure 之后为一行命令)
编译 make
安装make install
拷贝库到文件系统中
sudo cp /home/zzw/share/Security_Monitoring/mjpeg-streamer/video/jpegarm/lib* /nfs/rootfs/lib/
移植 mjpg-streamer
下载源码
官网:https://sourceforge.net/projects/mjpg-streamer/文件结构
├── doc ├── mjpeg-client #分别有 linux和windows 的客户端 ├── mjpg-streamer #目录下提供了 的执行程序和各个输入输出设备组件 ├── mjpg-streamer-experimental ├── udp_client └── uvc-streamer #目录下提供了 uvc-streamer的可执行目录 6 directories, 0 files
修改源码出处
CFLAGS += -O1 -DLINUX -D_GNU_SOURCE -Wall -shared -fPIC(CC)(CFLAGS) -o @inputuvc.cv4l2uvc.lojpegutils.lodynctrl.lo(LFLAGS)
在 mjpg-streamer-code-182/mjpg-streamer 目录下
编译:make CC=arm-linux-gcc在 mjpg-streamer 生成了input*.so output*.so 和 mjpg_streamr 可执行文件小问题:make CC=arm-linux-gccmake: svnversion: Command not found解决方案:sudo apt-get install subversion安装之前先更新一下软件包的源和依赖:Sudo apt-get update 更新软件源Sudo apt-get -f install 更新依赖再次编译:makeNothing to be done for `all'.先make clean,然后再make CC=arm-linux-gcc
查看生成的库和可执行的文件:
在开发板建立 mjpg-streamer 安装目录 (关键性的拷贝过程)
mkdir /home/nfs/rootfs/mjpg-streamer (你的根文件系统目录)cp *.so /home/nfs/rootfs/mjpg-streamer -arfcp mjpg_streamer/home/nfs/rootfs/mjpg-streamer -arf将源码目录中的 start.sh 和目录 www 拷贝到 /nfs/rootfs/mjpg-streamer/目录下,然后就可以测试啦sudo cp start.sh www/ /nfs/rootfs/mjpg-streamer/ -arf
测试 ./start.sh
HTML文件
将对服务器url请求,IP配置为服务器的IP地址,这里是192.168.2.10
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>摄像头</title>
</head><body><body background="./images/huaqing002.jpg"><table width="652" height="217" background="./images/安防监控.jpg" border="0" align="center"><tr><td> </td></tr></table><tr><table width="652" height="35" background="" border="0" align="center"><tr><td width="328"><div align="center">摄像头</div></td><td width="314"><div align="center"><a href="home1.html">回主页</a></div></td></tr></table><tr><table width="652" align="center" height="480" border="2"><tr><td height="500"><img src="http://192.168.2.10:8080/?action=stream" /></td></tr><tr><td height="34"><form id="form3" name="form3" method="post" action="cgi-bin/capture1.cgi"><input name="store" type="hidden" value="1" /><table width="500" border="1" bgcolor="#CCFFFF" bordercolor="#5500FF"><tr><td width="57">张数:</td><td width="195"><p><label><input type="radio" name="mode" value="1" id="mode_0" />1</label><label><input type="radio" name="mode" value="3" id="mode_1" />3</label><label><input type="radio" name="mode" value="5" id="mode_2" />5</label><label><input type="radio" name="mode" value="7" id="mode_3" />7</label><label><input type="radio" name="mode" value="9" id="mode_4" />9</label><br /></p></td><td width="226"><div align="center"><input type="submit" name="button3" id="button3" value="抓拍" /> <a href="cgi-bin/picture1.cgi">历史照片</a></div></td></tr></table></form></td></tr></table></body>
错误总结
问题:第一次运行发现页面没有图像显示,确定html文件中的ip地址是目标机
原因:市面上大部分摄像头都是支持YUV的,而不是JPEG的。
解决方法:修改 启动脚本文件 由于mjpg-stream支持JPEG和YUV两种格式,所以只需修改start.sh,在输入中加入 ” - y “
安防监控实现之mjpeg-streamer视频图像的显示相关推荐
- 视频智能分析系统EasyCVR视频流媒体安防监控云服务实现城市视频智能化应用
在互联网.物联网.大数据.人工智能引领新经济发展时,智慧城市成了城市发展破冰前行的利刃.而随着经济发展的需求和科学技术的进步,传统的电视监控因其具有不够精确等特点,已被新型的智能视频监控技术逐渐替代. ...
- SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云无插件直播点播解决方案之监控视频实时多屏预览
SkeyeVSS综合安防监控Onvif.RTSP.GB28181视频云无插件直播点播解决方案之监控视频实时多屏预览 SkeyeVSS支持一分屏.四分屏.九分屏.16分屏.25分屏.36分屏等几种N*N ...
- SkeyeVSS综合安防监控视频云服务使用说明文档
一.系统登录 SkeyeVSS安装完成后,假设安装服务器公网IP: 10.0.0.1, 通过默认端口8000:http://10.0.0.1:8000 访问WEB后台管理,登录界面如下: 默认用户名: ...
- SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云无插件直播点播解决方案之子系统微服务集群解决方案
SkeyeVSS综合安防监控Onvif.RTSP.GB28181视频云无插件直播点播解决方案之子系统微服务集群 我们通过SkeyeVSS系列文章<SkeyeVSS集群部署说明文档>可以了解 ...
- 基于SkeyeVSS综合安防监控视频云平台实现智能视频监控系统解决方案
智能视频监控系统 智能视频监控系统是指采用图像处理.模式识别和计算机视觉技术,通过在监控系统中增加智能视频分析模块,借助计算机强大的数据处理能力过滤掉视频画面无用的或干扰信息.自动识别不同物体,分析抽 ...
- 安防监控系统流媒体服务器,搭建一套安防监控系统RTSP/Onvif网络摄像头视频流媒体服务有哪些核心要素?...
原标题:搭建一套安防监控系统RTSP/Onvif网络摄像头视频流媒体服务有哪些核心要素? 在现代信息社会,人民的生活水准不断提高,因而对安全的需求也越来越迫切.特别自"9·11"与 ...
- 【解决方案】智能安防监控EasyCVR视频融合平台在棋牌室、洗浴中心等行业的应用
一.方案背景 自疫情爆发以来,人工智能化的安防监控应用已经覆盖了很多行业及领域,大幅度减少了人力资源消耗,节约了物料和费用.近期随着国内疫情的又一次重来,智能安防监控不但应用到了机场.陆地交通行业.学 ...
- SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云无插件直播点播解决方案之监控视频云端录像无插件回放
SkeyeVSS综合安防监控Onvif.RTSP.GB28181视频云无插件直播点播解决方案之监控视频云端录像无插件回放 SkeyeVSS通过接入SkeyeRMS录像服务器实现对接入系统的摄像机.NV ...
- SkeyeVSS综合安防监控Onvif、RTSP、GB28181视频云无插件直播点播解决方案之系统参数配置日志管理
SkeyeVSS综合安防监控Onvif.RTSP.GB28181视频云无插件直播点播解决方案之系统参数配置日志管理 1.系统参数配置 SkeyeVSS系统参数配置页面如下图所示: 其中包括: 服务器名 ...
最新文章
- Spring Boot 中的 @EnableAutoConfiguration 是如何处理的?
- numpy.array()基本操作
- linux清空文件内容
- SOJ 8064 Whack the Groundhog
- 如何将C#nullable int转换为int
- OC之ARC环境中的循环strong问题
- python-hashlib模块-加密
- C#0008--制作闪烁的窗体
- linux多播 多个接收方,在同一端口上接收多个多播源 – C,Linux
- Atitit 知识结构化的艺术 目录 1. 知识信息结构化脑图	2 1.1. 散乱化模式	2 2. 直线排列	2 2.1.1. 直排	2 2.1.2. 链表模式	2 3. 树形排列	2 3.1.
- 文本编辑器——VI/VIM
- python设置excel套打_你不一定知道这个用 Python 快速设置 Excel 表格边框的技巧
- logisim---8位加减法器
- 点到直线的距离公式: 一元微积分
- TEM测试常见问题及解答(五)
- 解决pymysql.err.InternalError: (1054, Unknown column '某某某' in 'field list') 的问题
- python-爬取中国评书网音频
- 为什么选php语言做网站,php做网站教程:PHP语言怎么做网站
- 通过RGB或YUV改变图像的色度和饱和度
- 10.26 酷狗音乐校招前端一面经历
热门文章
- uboot如何启动内核
- 3200亿家庭光伏市场蛋糕 中民投S2B模式能抢多少
- 2020全国高校名单,请收好!
- python是一种跨平台开源免费的_PyGaze:一个易于使用的开源的、跨平台的眼动追踪实验编程工具箱...
- 推荐系统6——基于标签的推荐方法
- Tableau 之 个人标签云图
- [转]关于怎样管好一个团队
- Shell编程之正则表达式与文本编辑器
- 腾讯云、阿里云短信服务
- Android Studio App开发之利用图像解码器ImageDecoder播放GIF动图、Webp、HEIF图片(附源码 简单实用)