我的一些学习经验:ONVIF

李迟按:

这个文章讲讲笔者学习ONVIF的经历。

其实,早在2013年就接触了ONVIF。当时研发的新平台任务有ONVIF的需求。当时我记得自己使用GSOAP生成ONVIF框架代码,还录制了一个视频,在会上讲给同事听。后来利用业余时间看了ONVIF标准,一开始看得不明不白,基本不懂在看什么,看了2遍,发现了些门道,再看一遍,发现原来不过如此。由于公司在该新平台研发任务之前已经有其它部门同事实现了ONVIF,所以项目上直接使用。我用业余时间看,主要还是因为对此有兴趣;二来因为公司项目使用的是网络上人家生成好的代码。我不习惯直接使用人家的东西,必须要自己弄明白才行。后来“人家的代码”一直被使用着,公司组织变化后,ONVIF和流媒体任务落到部门所管,不过是其它同事维护着。所以我对ONVIF的了解,止步于此。

去年,公司参加ONVIF组织的一次会议,结果惨败,除了看视频外,其它功能基本没实现。公司决策对ONVIF进行重新梳理并要求在春节前部署到所有产品上(当然是不可能的)。当时老大是安排给另一位同事进行。再后来,领导看到任务量大,我作为当时部门唯一“机动人员”,光荣地被领导安排协助任务。终于在春节后完成了第一阶段工作。

后来,这个同事被派到大腿部门工作了,我光荣地接手ONVIF的第二阶段任务。但还是在该同事主导下进行,因为老大不放心我这么一位新手接手,怕搞乱重构后代码架构。实际上,我必须有能力独立承担此事。年中时,该同事果然终于转岗到那个部门了,我不出意料外地接手ONVIF的全部工作。自此,除了驱动、Linux系统,我还有ONVIF的任务。

在作为机动人员参与协助ONVIF任务后,又重新看了新版本的标准文档。由于这次真的要写代码实现,所以看得比较细。网上有很多讲ONVIF的文章,但很多是重复的,且是老版本的。不过作为入门资料还是有作用的。

经过较长时间编码的洗礼,对ONVIF有进一步的认知。比如IP地址子网掩码使用的是数字形式而不是常见的字符串。由于ONVIF不同命令使用的字段参数不固定,所以我们引入了C++的STL。像IP地址允许有多个;视频分辨率允许有多个,等等。这段时间也使得我在实际编码中尽量向C++ STL靠拢。

后来,经过考虑,决定在业余时间自己实现一个ONVIF客户端。

这样,对于ONVIF服务端和客户端都进行实践了,对此标准掌握也更加牢固。

当然,限于资源,只能实现了设备管理、媒体服务以及图像服务,其它如PTZ和事件监控,等到条件成熟或公司安排再进行了。

李迟 2016.10 中旬

你可能感兴趣的:(我的一些学习经验:ONVIF)