网络摄像机 IPC
现今的手机、运动摄像机以及安防监控领域的摄像机,它们通过光学传感器获取外部图像,经过处理后将视频信号存储或者传输到远端。本文主要针对网络摄像机。
硬件层
硬件层随着应用场景的的不同硬件方案上差别很大,手机的芯片解决方案主要偏向于射频和基带信号处理,网上有很多联发科手机芯片解决方案,而安防领域则偏重于图像质量,更偏重于高清、远距离监控等;
安防监控和手机的外设差异非常大,安防领域设备的机型包括,卡片机、半球机、球机、筒机。具体外设随着机型的不同,差异比较明显,360度转动的滑环在球机类设备使用而卡片机上没有。
在图像传感器这款使用的型号还是比较多的,130万、200万、300万、500万、600万像素的设备挺多的,目前传感器这块主要来自美国和日本。常用的图像传感器分为CMOS(complementary Metal-Oxide Semiconductor)和CCD(charge-coupled device)类型,随着技术的进步两者差异在逐步减小,CMOS以成本优势依然占据市场大头,目前图像传感器厂商主要有松下、索尼、夏普、豪威、三星、aptina。
安防芯片这块主要有Ti、海思和安霸,Ti达芬奇系列DSP芯片,如C6678等,信号处理较为出色,常被采用到一些高端通信、信号处理场合,其达芬奇系列的DM385和DM8127以出色的性能占据了监控市场的高端需求,Ti的DSP开发灵活性大。安霸的A5s、S2l以其出色的图像质量和价格在中低端市场占有一席之地,其SDK是这三家中最好的一个,其也是对Linux内核版本提升最快的。海思的3516、3518芯片也正在抢占市场,这三家中售后做的很好,价格优势明显。
这些芯片基本具备的功能大致如下:
图像类: DSP(digital signal process), ISP(image signal process),编码硬核,ROI(region of interest),MDT(motion detection)
CPU: ARM
SOC 外设:音频(内置codec),网口(百兆、千兆),USB,串口
功能外设:SD、NAND、DDR、SPI、ii2C、GPIO等
BSP层
BSP层的主要功能是封装底层资源,提供抽象的接口给应用程序使用,应用程序可以忽略资源的分配和管理,更多的倾向于业务逻辑功能的实现。
BSP这块我将其分为了两个部分,一个是OS一个库,OS层使用Linux操作系统,由于芯片方案商提供的SDK中包含了OS,一般这块只需要实现各种驱动程序,更优的文件系统,安全管理等。
库这块主要包括四个部分,均已so形式的库提供给应用程序使用:
- 标准glibc库,这个库提供给应用程序,基本的read、write、ioctl以及socket等均在这里
- ISP库,这部分只要对应用程序提供设置图像传感器不同的参数,以达到修改图像质量的目的,能够改变宽动态、白平衡...
- DSP库,图像的编解码库,这部分由应用程序传递的参数进行编解码,这里可以设置图像分辨率、编码格式等。
- 购买芯片厂商各自实现的库,这些包括:
- 小型数据库SQLite,用于保存和配置用户配置的参数,
- 图像处理算法库(比如opencv提供的智能算法),这部分代码使用C编写,可以再DSP(ti8127)或者ARM(安霸A5)运行,有些厂商的DSP是专用图像编解码,不能够为用户所使用的。
- 其它特定功能的库
应用层包括两个部分:
业务逻辑层:用于区分各种功能
这部分主要是一些设备管理、安全监测、报警推送、抓图等,见图中
网络交互层:用于网络支持
网络摄像机的特点是,将视频信号接入网络,所以不可少的需要支持若干视频传输协议。
网络层分为两个子类:
基于IE/chrome的视频预览
现有架构最常用的,偏向于PC、CVR、多屏监控中心应用
基于Android/ISO客户端的预览
偏向于取代文字短信、语音通信的视频留言、视频实时通信,未来QQ以及微信之类的社交软件的发展趋势,也是未来电话的发展趋势。
目前1080P或者720P的图像2Mbps或者3Mbps的图像质量非常的好,完全可以满足视频通信需求,现状4G电信手机网速峰值达到了2M每秒,思科的VNI白皮书预测到2019年全球移动网的平均速率将达到4Mbps,手机端的速率将达到12Mbps,只要费用能够降低,则完全能够实现实时语音通信。