【原创】IP摄像头技术纵览—开篇

【原创】IP摄像头技术纵览—开篇

很长一段时间一来,一直对智能家居很感兴趣。平时开发也大部分是在嵌入式linux平台,多使用GPRS模块进行远程通信与控制,PPP拨号上网虽然能够实现各种环境参数采集等低速率通信,但最感兴趣的摄像头功能一直没有办法加入,终于14年家里装上光纤(本人很low^_^),然后开始动手开发摄像头功能。由于动手开发时对摄像头方面的开发一无所知,中间走了相当多的弯路,几次都想放弃,中间有将近半年的时间都没什么进展,一直没有入门。现在回想原因,一是当时没有对linux摄像头技术有个理论上的概览;二是满世界找的可以实现摄像头图像采集的linux开源程序,竟无一个可以让我看到图像的,主要是水平有限;D。断断续续偶尔捡起来测试一下,在15年春节过后,终于沉下心来认真的看了一遍《Video for Linux 2(V4L2)》规范,看完之后开发就如滔滔江水奔流向前,每周都有新突破,每天都有新收获,虽然很累,基本上每天都要实验到23点,但是成绩斐然。

本文写作时间2015年4月末,我开始研究网络摄像头时,网上还没有看到小米摄像头、百度耳目、360摄像头,而现在,这些产品已经大规模铺货。网上有很多拆解教程,可以发现这些摄像头都是采用华为Hi3518方案,华为的这套方案成本很低,功能很强大,基本涵盖了IP摄像头的全部功能模块,价格大概在60元左右。但是我进行的工作本身就是为了折腾,所以开发工作都在手头的AT91SAM9260开发板上完成,一切都是自己重头开始造轮子。目测目前竟无一本详细讲解IP摄像头的书!!为了纪念这段日子,同时为了给后来者指明方向,特将学习心得、经验总结为这篇文章,从头到尾详细讲解网络摄像头。由于水平有限,不正确之处喜欢大牛指点哈。

废话说了一大堆,下面进入正题。

Author: chad Mail: linczone@163.com

本文可以自由转载,但转载请务必注明出处以及本声明信息,拒绝用于商业用途。

关键字: AT91SAM9260、USB摄像头、V4L2、YUV/RGB、framebuffer、mjpg-streamer、DNS、NAT、UDP打洞、TUN/TAP、n2n、LIVE555 、FFMPEG

目录

一、linux 内核编译,USB摄像头设备识别

  1. 内核编译、文件系统移植—茅庐初创
  2. USB摄像头初识

二、linux 视频开发接口V4L2概述

  1. V4L2 接口说明
  2. 视频图像格式说明—YUV/RGB
  3. USB摄像头参数采集测试
  4. 摄像头静态图像采集生成JPEG图像

三、图像数据在帧缓存设备(framebuffer)上的显示

  1. framebuffer 学习
  2. jpeg图像在帧缓存设备上的显示

四、摄像头参数控制—亮度、对比度、自动对焦等

  1. V4L2 摄像头控制接口
  2. 控制测试

五、网络摄像头初试—mjpg-streamer移植与部署

  1. vgrabbj、spacview、Luvcview、mjpg-streamer评测对比
  2. mjpg-streamer移植与部署
  3. mjpg-streamer实现分析
  4. 运动检测功能添加实现

六、通过internet访问摄像头

  1. 路由器配置—DMZ虚拟主机、端口映射测试
  2. DNS动态域名测试

七、NAT技术—UDP打洞实现内网穿透

  1. NAT类型及检测
  2. UDP内网穿透实验
  3. 目前市面上网络摄像头方案简介

八、VPN技术—虚拟专网实现anywhere can control

  1. TUN/TAP 虚拟网卡
  2. VPN技术简介
  3. n2n—内网穿透神器
  4. n2n实现分析

九、UPnP技术

  1. UPnP 简介
  2. 简单了解ONVIF 协议

十、流媒体传输—H.264编解码

  1. 流媒体视频传输—容器与编码
  2. GStreamer
  3. LIVE555
  4. FFMPEG

十一、数字图像处理—机器视觉

  1. Opencv与EmguCV学习
  2. Aforge学习
  3. Python建模及测试

十二、网络摄像头技术总结

本文脉络将以上文目录为准绳,未看内容,先看目录基本就可以明白网络摄像头开发的流程,沿着上面的步骤也可以自行学习,必定事半功倍。

———–未完待续 2015-04-25 初稿 (2016-03-01 修订与上海)

Published by

风君子

独自遨游何稽首 揭天掀地慰生平