赞
踩
写在最前面 华清远见教育集团 15年专注高端IT培训 做良心教育,做专业教育,做受人尊敬的职业教育
创客学院官网:http://www.makeru.com.cn/
华清远见创客学院嵌入式课程链接:http://www.makeru.com.cn/emb
华清远见创客学院物联网课程链接:http://www.makeru.com.cn/iot
实现远程视频监控需要视频服务器,于是 mjpg-streamer 这个开源软件变成了我们的选择之一,并且成为我们最终的选择,mjpg-streamer 提供多种输入及输出方式。输入可以是一个 camera 也可以是一个文件,输出可以是一个文件也可以以 HTTP 的方式 输出到远程客户端,这里我们选择的方式是从 camera 中\取数据以 HTTP 的方式发送到远端客户端。远端客户端可以是任何支持 stream 传输的 web 浏览器。
UVC摄像头+驱动+JPEG图库+mjpeg-streamer+HTML 完成了对用户远程提供视屏展示的服务。首先底层通过摄像头采集图片,通过驱动将数据流存储到JPEG图库,最终通过html交给用户的浏览器来解析,而mjpeg-streamer用来实现对这一流程的的控制。构成mjpeg-streamer视频流服务器。
免驱动摄像头,是一种遵循视频设备类(USB Video Class,简称UVC)标准协议的摄像头产品。将符合标准的摄像头连接到符合标准的操作系统,系统就会自动为其安装驱动并进行设置,使摄像头实现真正意义上的即插即用。
uvc是一种硬件的框架结构,只有当其是通过一种标准的设计使其实现了免驱;而V4L2是一种驱动程序,其是实现系统与uvc设备等的通信。
https://blog.csdn.net/codectq/article/details/44451237#commentBox
查看我的摄像头信息,执行dmesg信息打印如下
内核选配 添加驱动支持USB储存设备
进入内核目录:cd linux-3.14
执行 #make menuconfig
Device 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 Driver
USB Physical Layer drivers --->
<*> Samsung USB 2.0 PHY controller Driver
CSI 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 目录下
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/
文件结构
├── 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-gcc make: svnversion: Command not found 解决方案:sudo apt-get install subversion 安装之前先更新一下软件包的源和依赖: Sudo apt-get update 更新软件源 Sudo apt-get -f install 更新依赖 再次编译: make Nothing 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 -arf
cp 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
将对服务器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 “
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。