论整体架构来说,嵌入式音视频的程序虽说资源有限,但是功能却一点也不简单,包含有音视频的采集,显示,存储,传输,高级的设备上还包含着一些高级的AI算法比如人脸识别,人形跟踪等等对视频数据进行处理。可以说麻雀虽小五脏俱全。
功能的日益增多自然对程序员的开发提出了巨大的挑战,既要满足日益复杂的功能,又不能占用过多的内存。从程序的构成部分上讲主要包含两大部分 一 是各个安防专用芯片提供的API部分,包含着音视频的采集,编解码,以及显示。二是在前者基础上的纯应用角度的传输,存储数据开发。 针对前者,开发人员要对安防芯片的SDK开发手册,尤其是其中相关的内存优化部分熟读于胸,并且要对其各个系统调试接口相当熟悉,(目前国产芯片主要有 海思,富瀚微,国科微,SigmaStar,亿智,瑞星微等等,调试接口一般都集中在文件系统的proc目录下),后者一方面需要的Linux系统上多线程序开发的扎实的基本功,数据结构与算法,各个常用设计模式的熟悉,更需要对音视频的各个存储格式,传输协议的熟练运用,只有多者兼备才能成为一个合格的嵌入式音视频开发者。
开发虽然不易,但是若能掌握方法,却往往能事半功倍。下面是我个人的几点感悟希望能起到抛砖引玉的作用。(这里要感谢下零声学院的Darren老师,在音视频同步以及相关成熟框架的推荐上给了我们个人很多的帮助(C/C++