论整体架构来说,嵌入式音视频的程序虽说资源有限,但是功能却一点也不简单,包含有音视频的采集,显示,存储,传输,高级的设备上还包含着一些高级的AI算法比如人脸识别,人形跟踪等等对视频数据进行处理。可以说麻雀虽小五脏俱全。

功能的日益增多自然对程序员的开发提出了巨大的挑战,既要满足日益复杂的功能,又不能占用过多的内存。从程序的构成部分上讲主要包含两大部分  一 是各个安防专用芯片提供的API部分,包含着音视频的采集,编解码,以及显示。二是在前者基础上的纯应用角度的传输,存储数据开发。   针对前者,开发人员要对安防芯片的SDK开发手册,尤其是其中相关的内存优化部分熟读于胸,并且要对其各个系统调试接口相当熟悉,(目前国产芯片主要有 海思,富瀚微,国科微,SigmaStar,亿智,瑞星微等等,调试接口一般都集中在文件系统的proc目录下),后者一方面需要的Linux系统上多线程序开发的扎实的基本功,数据结构与算法,各个常用设计模式的熟悉,更需要对音视频的各个存储格式,传输协议的熟练运用,只有多者兼备才能成为一个合格的嵌入式音视频开发者。

开发虽然不易,但是若能掌握方法,却往往能事半功倍。下面是我个人的几点感悟希望能起到抛砖引玉的作用。(这里要感谢下零声学院的Darren老师,在音视频同步以及相关成熟框架的推荐上给了我们个人很多的帮助(C/C++Linux服务器开发/后台架构师【零声教育】-学习视频教程-腾讯课堂))。

在这几年开发中,我觉得要从整体上把握整个数据的流向,包括大量的音视频流和与之相关的信息数据流,要十分清楚数据是从哪里来,到哪里去,这样整个程序的架构就会不用差到哪里去。尤其是音视频采集这块,一定要设计成多消费者可同时使用的高效缓冲,多消费者,同时 这两点很重要,采集端是整个数据的源头,这里有成熟的API调用,能最大限度地减小上层模块的耦合和复杂度,同时也能有效节省内存,使得各个程序模块变得清晰明了。 另外对窄带类型的命令,控制数据传输,要多用消息队列和订阅者模式,少用全局变量来解耦,全局变量虽然很容易使用,但是一旦使用过多,会让程序的可读性呈现指数级的下降,调试也会变得困难重重。这里我觉得开闭原则很重要,对新增开放,对修改关闭。我们的程序架构朝着这个方向努力,那么就会离简单,高效的目标越来越近,我们自身的成长也会越来越快。

关于嵌入式音视频程序开发的感想相关推荐

  1. 音视频开发成长之路—进阶之路3个重要知识点丨WebRTC丨FFmpeg丨SRS流媒体服务器丨C++音视频丨嵌入式音视频

    音视频开发成长之路-进阶之路3个重要知识点 视频讲解如下,点击观看: 音视频开发成长之路-进阶之路3个重要知识点丨WebRTC丨FFmpeg丨SRS流媒体服务器丨C++音视频丨嵌入式音视频 音视频高级 ...

  2. linux底层开发视频教学,ARM Linux嵌入式音视频设备底层开发

    摘要: 随着科学技术的快速发展,嵌入式系统早已成为电子信息和计算机行业发展重点.嵌入式设备已经广泛的融入我们的世界. 本文的研究对象是以ARM为核心的嵌入式音视频设备.本文完成了该系统的底层开发.本文 ...

  3. 嵌入式Linux应用程序开发视频教程-曹国辉-专题视频课程

    嵌入式Linux应用程序开发视频教程-1834人已学习 课程介绍         本课程是嵌入式研发精英培养计划的核心课程,重点讲解嵌入式Linux应用程序开发核心技术,包括嵌入式Linux开发工具的 ...

  4. 音视频技术开发周刊 69期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第69期内容,祝您阅读愉快. 架构 BBR如何让S ...

  5. 音视频技术开发周刊 68期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第68期内容,祝您阅读愉快. 架构 刘志勇:微博短 ...

  6. 音视频技术开发周刊 56期

    『音视频技术开发周刊』由LiveVideoStack团队出品,专注在音视频技术领域,纵览相关技术领域的干货和新闻投稿,每周一期.点击『阅读原文』,浏览第56期内容,祝您阅读愉快. 策划 / LiveV ...

  7. 全功能音视频互动开发平台

    全功能音视频互动开发平台 云智真音视频解决方案,即云智真音视频互动开发平台(云智真音视频SDK开发包)通过封装音视频编解码.流媒体处理以及P2P等专业复杂技术,为上层应用提供简单的API控制接口,实现 ...

  8. 音视频互动开发平台之AnyChat SDK

    平台介绍 AnyChat音视频互动开发平台是一套跨平台的即时通讯解决方案,基于先进的H.264视频编码标准.AAC音频编码标准与P2P技术,支持高清视频,整合了佰锐科技在音视频编码.多媒体通讯领域领先 ...

  9. 抖音小程序开发:CEO们涌进直播间带货

    抖音小程序开发:CEO们涌进直播间带货 一场大型实验正在百万CEO中展开. 原本在后方排兵布阵的CEO们,齐刷刷地把战场迁移到直播间,他们不讲段子,没有强大的粉丝基数,很多人第一次开播还有些不适应. ...

最新文章

  1. java 单例写法_java 单例模式的几种写法
  2. 量子位「MEET 2022智能未来大会」启动,邀你一起见证AI价值
  3. not enough actual parameters for macro 'min'(QT与vs2010)
  4. 有关信号处理中的 窗函数
  5. jqGrid getGridParam办法
  6. oracle 数据库字段html显示正常text显示不全,layui表格字段表格显示不全(自适应)...
  7. 《信息安全系统设计基础》实验一 开发环境的熟悉
  8. 计算机课组会议讲话,备课组长会议讲话稿
  9. python字节流分割_Python 字节流,字符串,十六进制相互转换实例(binascii,bytes)
  10. 模线性同余方程组求解
  11. iOS 图片拉伸、拉伸两端保留中间
  12. bll调用mysql存储过程_SQL Server的存储过程或自定义函数调用Com组件
  13. 出埃及记:摩西劈开红海
  14. 软件poc测试方案,华为fusioncloud桌面云解决方案5.3poc测试方案v1.0
  15. mysql身份证号的类型_MySQL--隐藏手机号、身份证号三种方式
  16. V神发布ETH2.0信标链首个硬分叉提案HF1,引入更公平的节点惩罚机制
  17. 网络硬件三剑客的集线器(Hub)、交换机(Switch)与路由器(Router)
  18. javascript网页特效(一)
  19. 【转载】Windows 7下使用bcdedit删除多余启动项的命令
  20. 压力测试工具-ab工具

热门文章

  1. VScode修改html代码后,浏览器页面更新不及时
  2. 【渝粤题库】陕西师范大学500010 量子力学 作业(专升本)
  3. 【报错解决】错误代码18456,SQL Server 登录失败
  4. 支付FM免签通道常见问题—监控APP找不到对应金额的收款人订单
  5. 分号与逗号的区别及举例_顿号、逗号、分号的区别
  6. 美团小哥用计算机,美团2020算法工程师编程题--外卖小哥的保温箱
  7. 建模计算机处理器,实战建模渲染,用锐龙7 5800X拒绝拖稿
  8. git reflog 时光穿梭机
  9. 锚点的作用是什么?如何创建锚点?
  10. 海思Hi3519A开发(3.烧录uboot、kernel、rootfs)