1、前言
近些年来,安防监控市场需求广泛。安防监控已经成众多细分行业,如金融、教育、医疗、交通等,安全的必需品。消费类市场中,随着人们对人身及财产安全意识的不断提升,中小企业、商铺、家庭逐渐成为安防监控消费的中坚力量。以网络摄像机(IP Camera)为例,其年全球出货量已达亿级别,且保持每年20%的持续增长。
图 1 网络摄像机产品的基本形态
市场需求的增长和应用场景的多元化,将推动安防监控设备终端的产出和升级。安防监控方案商在不断地优化、调整设备端的方案,希望基于一套通用、易用的技术底座,快速打造新品,以投放市场。
而这套技术底座的重要组成部分是由芯片厂商提供的软件开发包(Software Development Kit)。磨刀不误砍柴工——一款高效的安防监控芯片SDK不仅能够缩短方案商的开发周期,还能为产品的性能指标提供竞争力的保障。尤其是低功耗、快速启动、低资源消耗等特性,是SDK能够赋予产品的最佳标签。
本文将围绕如何打造一款高效的安防监控芯片SDK,介绍芯片厂商在输出给方案商SDK之前需要考虑的方方面面。本文是根据笔者近期IPC设备端项目经验总结,对于庞杂的安防监控行业,难免有坐井观天之嫌,不足之处请指正。
2、芯片厂商SDK的组成
一款家用网络摄像机设备端的方案,分为硬件与软件两部分。硬件部分,主要包括主控芯片、图像采集器(Sensor)、图像处理器(ISP)、音频采集/播放(AI/AO)、Flash、SD卡、WiFi/4G/Ethernet、电机、红外传感器、电源等。而软件部分,从业务功能的角度,主要包括P2P视频流、视频本地/云端存储、网络录像机(NVR)、外设控制等。
首先,芯片厂商的SDK提供的功能应与业务保持独立,以保障通用性。SDK的基本功能包括视频输入/输出、视频编码/解码(H264、MJPEG)、屏幕信息显示(OSD)、音频输入/输出、音频编码/解码(AAC、MP3)、网络传输(TCP/IP、HTTP)、本地存储(SD卡、Flash)、外设操控等。
其次,芯片厂商的SDK需要模块化管理,以保障可维护性应与可扩展性。SDK按模块可划分为内核、驱动、Bootloader、设备树、中间件、三方库、应用示例等。
此外,一个成熟的芯片厂商SDK,还应提供独立的编译体系、工具链、烧录、调试等辅助工具。
图 2 安防监控芯片厂商SDK基本组成
3、SDK使用流程
在讨论芯片厂商对SDK的优化之前,我们先了解一下方案商拿到SDK后使用的基本步骤。
步骤一:建开发环境。该步骤主要为后续编译准备必要的软件环境,例如安装Python、Scons。
步骤二:安装SDK。芯片厂商输出的SDK一般为一个安装包或者压缩包。该步骤主要将SDK包里的内容,提取到开发环境中,并对SDK进行板级配置,例如选择芯片类型、所需网络、Flash类型。