在开发视频监控系统应用软件时,大家往往把关注的焦点集中于数字音/视频的编解码的实现上,而忽略了视频监控系统应用软件的整体架构。当然视频监控的核心也是在于音视频编解码上,佰锐的Anychat SDK 主要就是在音视频领域这块,长期研究音视频即时通讯,对于音视频处理模块(采集、编解码)、流媒体管理模块(丢包重传、抖动平滑、动态缓冲)、流媒体播放模块(多路混音、音视频同步)以及P2P网络模块(NAT穿透、UPnP支持)等多个子模块,封装了底层的硬件操作(音视频采集、播放)、封装了流媒体处理(编解码、网络传输)等非常专业和复杂的技术,为上层应用提供简单的API控制接口,可以在极短的开发周期,以及极少的人力资源投入下为客户的现有平台增加音视频即时通讯、多方会议的功能。AnyChat SDK可以让企业越过复杂的底层技术实现,而把主要精力投入项目的业务逻辑处理上,加快项目开发进展,从而为企业赢得市场先机。

视频监控系统中,一个优秀的音/视频编解码算法固然很重要,但其中是整个视频监控系统应用软件的一个重要组成部分。视频监控系统应用程序还涉及到如何搞笑地输入/输出数字音/视频数据,这些数据又如何与音/视频编解码算法协调、配合,以及视频监控系统应用软件各个模块之间如何协调工作。本文主要阐述软件开发方法,说明层次化软件开发方法优越性。

传统的软件开发方法

    传统的软件开发方法是一种线性的程序流程,首先以功能模块对整个程序进行模块化,然后选择ASM或C语言,从零开始编写各个子模块,最后编写一个主循环,将这些子模块线性地顺序循环执行。

传统的软件开发方法的优点是:整个程序的控制流、数据流完全由编程者掌握,程序直观、易理解。但其缺点是:各个子模块之间紧密耦合,修改某一子模块,将可能影响整个程序,也即其代码的重复使用率不高,导致相似系统之间程序的移植性差;由于程序顺序、循环执行,在算法对数据进行处理前,需要花大量时间来等待输入/输出数据就绪,导致CPU的利用率低,同样,简单的顺序、循环执行,只能管理和调度单一任务,不能实现多任务的管理和调度。

倡导的DSP软件开发方法

为了加速DSP软件开发,一套完善的、规范的、标准化的DSP软件开发方法称之为DSP软件技术。它是以DSP/BIOS实时多任务操作系统为核心,以层次化结构为基础的一种软件开发方法,其优点是

软件结构层次化:各层之间均采用标准的API,修改某一层不会影响其它层,提高了代码的重复使用率,改善和提高相似系统之间的程序移植性;

应用层;

设备驱动层;

硬件设备层;

以DSP/BIOS实时多任务内核为主控,使CPU得利用率最大化;

DSP/BIOS负责程序的管理和调度;

DSP/BIOS可对程序的控制流、数据流及程序执行效率进行实时分析。

缺点是:整个程序的控制流、数据流由DSP/BIOS来管理,程序将不再直观和易理解。豪宅DSP/BIOS提供了实时分析模块,可全程实时分析控制流、数据流及程序执行效率。

层次化的设备驱动程序模型

一个设备驱动程序开发包,为设备驱动程序设计一个层次化的模型,称为IOM模型,IOM模型将设备驱动程序分为2层,上层为与硬件无关的层称为类设备驱动程序,负责管理设备实例、同步和I/Q请求串行化等操作。与硬件五官的下层称为迷你设备驱动程序,负责对实际的设备进行初始化或必要的控制操作。

类设备驱动程序

类设备驱动程序是设备驱动程序的上层抽象,时期与特定设备无关,DDK为每一类的类设备驱动程序定义了一组标准的API函数,应用程序均只能通过此组API函数来调用设备驱动程序,从而使应用程序与设备驱动程序分离。

DDK定义了3大类的类驱动程序:SIO、PIP和GIO。

SIO:流I/O接口,由SIO和DIO组成,PIO负责缓冲器管理、信号同步以及底层迷你驱动程序接口。

GIO:通用I/O,允许进行块读块写,设备驱动程序开发者可以用其来实现新的、专用的类设备驱动程序。

DDK中已完整地实现了SIO和PIP类设备驱动程序,使用SIO和PIP类设备驱动程序的设备驱动程序开发者无需再编写任何类设备驱动程序代码。而对于使用GIO类设备驱动程序的设备驱动程序开发者来说,DDK已为GIO实现了一组基本的API函数,所以开发者只需通过宏定义来调用此组API函数,实现自己专用的类设备驱动程序。

迷你设备驱动程序

迷你设备驱动程序时设备驱动程序的底层抽象,与特定设备有关,对硬件设备进行实际操作,DDK为迷你设备驱动程序规定一组标准的API函数,类设备驱动程序通过这些标准化了的API函数来调用迷你设备驱动程序,而对设备驱动程序开发者来说,只需为特定的函数体。在此组API函数的特定的函数体中,用户则可以通过调用CLS/BSL库来对设备的具体硬件进行初始化和相关的控制操作。

为什么要用IOM设备驱动程序模型
   
   
IOM设备驱动程序模型是层次化了的设备驱动程序,层次化设计通过使层之间的接口标准化,并且只有相邻层之间才可相互调用,来有效地将上层应用程序与下层具体的硬件设备的操作细节分离。所以,当更换其中的某些硬件外设时,通常只需修改底层的迷你驱动程序,而上层应用程序的修改则可最小化,从而提高上层应用程序的通用性、可重复使用性和可移植性。

IOM模型的设备驱动程序中包含什么

在程序设备是用来完成数据输入/输出的、完整的数据链路,有时单个外设并不一定称为设备,如:音频输入/输出设备。它是由DSP片商McBSP+IIC+DMA+中断+片外Codec等片上/片外外设器件构成。在这样一个数据链路中,单独的一个片上/片外外设并不能完成数据真正的输入/输出,不能称为设备。那么设备室如何来完成相应的数据输入/输出?

首先,需要对构成设备的各外设进行初始化,设置它们的工作方式,这些外设才能正确操作。另外,外设的某些功能需要外设操作过程中动态调节,如:A/D转换器的采样率可能需要应用程序动态地调整;UART器件的波特率可能需要应用程序动态地调整;外设所对应的中断、DMA/EDMA通道等也可能要由应用程序根据需要动态来修改。所以设备驱动程序必定有设备初始化函数、和某些相关的设置函数。

其次,需要对其进行读/写操作,即完成外设最基本的输入/输出功能。应用程序一般是成批地处理数据,而外设往往一个接一个地输入/输出数据,二者之间需要缓冲器来进行缓存,设备驱动程序的输入/输出函数完成外设的时间读/写操作,将数据存入/读出缓冲器,应用程序则在缓冲器可用时,进行相应的处理。由此可见,缓冲器是在应用程序与设备驱动程序之间来回切换的,不同的应用所需的缓冲器的大小不同,而且为了避免数据的覆盖,可能需要用多个缓冲器来进行切换。缓冲器的大小、缓冲器的个数、缓冲器由驱动程序管理还是由应用程序管理可根据应用的需要灵活安排。外设的读/写操作并非随时可以进行,必须满足一定条件,此条件一般用于作为中断信号或标志信号,另外,为了提升输入/输出的效率,往往需要用DMA/EDMA配合工作,驱动程序往往会中断、DMA/EDMA相关联。

最后,驱动程序输入/输出的数据必须由应用程序来处理,应用程序只有在数据就绪时,才能对缓冲器进行读/写操作,就存在驱动程序与应用程序同步的问题,同步一般有二种方式,一种是“阻塞”,另一种带回调函数的非“阻塞”。二种不同的同步方式,实际对应“阻塞”方式时,选用软件中断型线程。

结语

采用IOM模型来开发底层设备驱动程序,要比传统的软件开发更复杂,整个程序的控制流和数据流更不直观和不易理解,但掌握这样的软件开发方法,那么在下一个项目中已开发完的程序的继承性和可移植性将得到充分发挥,在我们今后的软件开发中,将起到事半功倍的作用。如今市场竞争越来越激烈,如何在有限的时间内完成项目,满足客户的需求成为企业决策者所需要面对的现实。Anychat可以为您节约开发时间,缩短项目开发周期;节省开发费用,减少人力资源投入;平台自主开发,提升企业综合竞争力;产品跨平台,应用领域广阔;API接口丰富,方便与第三方业务集成;专业技术支持,性能稳定可靠。

对于本博客有任何问题的朋友可加Q:992139738

转载于:https://blog.51cto.com/2343338/498613

最优视频监控软件开发的实现方法相关推荐

  1. 视频监控软件开发的需求管理

    视频监控软件开发的需求管理 摘要:项目需求管理的目的是确保各方对需求的一致理解,管理和控制需求的变更,从需求到最终产品的双向追踪.项目的需求管理可以在很大程度上影响项目的成败.本文以"××职 ...

  2. 如何评判在线直播源码优劣?视频直播软件开发经验之谈

    直播经过这些年的不断发展,使用者逐渐增加,在视频直播软件开发行业从业者的不断努力下,在线直播源码变得越来越完善,甚至已有了一些开发窍门的积累和判断视频直播软件优劣性的指标,本篇文章就来讲讲,该如何评判 ...

  3. 2022-2028全球视频监控软件行业调研及趋势分析报告

    据恒州诚思调研统计,2021年全球视频监控软件市场规模约 亿元,2017-2021年年复合增长率CAGR约为 %,预计未来将持续保持平稳增长的态势,到2028年市场规模将接近 亿元,未来六年CAGR为 ...

  4. 视频直播软件开发需要什么?

    直播行业因为强硬的技术支撑,走的越来越稳,给大家介绍一些视频直播软件开发的需要! 对于视频直播软件开发首先的就是系统开发语言,我们来看下有哪些开发语言!我们用云豹直播为例. 云豹直播互动系统由 WEB ...

  5. 八大视频监控软件对比

    http://gztw.com/2006/04/post_21.html 如今视频摄像头已经是的电脑上的标准配备,宽带互联网接入也是日渐普及,利用电脑上现成的视频摄像头,实施远程视频监控可以说是再方便 ...

  6. 视频监控软件 SecuritySpy 简介

    SecuritySpy Mac版是Mac os平台上的一款功能非常强大的Mac视频监控软件,SecuritySpy Mac版可以帮助你利用你的电脑监控你想监控的地方,利用这款软件可以和外接摄像头连接, ...

  7. git version是什么软件_Deepin 15.11 安装 ZoneMinder 视频监控软件

    Zoneminder是一款开源的视频监控软件,可以很方便的连接ip摄像头.因计划将家中的监控摄像头引入NAS,在一台deepin系统的笔记本是先进行了测试.UBUNTU和debian系统都是很容易安装 ...

  8. 音视频开发(18)---视频监控客户端开发(IP Camera)总结

    视频监控客户端开发(IP Camera)总结 首先看下项目需求:   1.最多同时支持16路高清音视频同时显示.   2.窗口模式,全屏,1窗口,4窗口,9窗口,16窗口.   3.播放控制,开始播放 ...

  9. 不一样的短视频直播软件开发?

    在短视频行业中,短视频直播app软件中抖音是最为经典的案例,随着目前视频行业的爆发式增长,他很快的成为用户拍摄短视频的首选,如果说有什么项目最火,我想应该是微视了,以前的快手,现在的抖音,反正我没事的 ...

最新文章

  1. 听说你,对薪酬待遇不太满意。。。
  2. 编程命名中的7+1个提示
  3. 【SpringBoot零基础案例06】【IEDA 2021.1】多环境下.properties配置文件的使用
  4. 敏捷实践:比每日会议更疯狂的半日会议!
  5. typeorm 表名_typeORM 多对多关系不同情况的处理
  6. apache 支持php urlmanager,Yii中urlManager的配置
  7. 在mysql的操作界面中,如何清屏幕
  8. C# 设计模式巩固笔记 - 建造者模式
  9. Poj 2187 旋转卡壳
  10. iptables的备份
  11. 高等代数——大学高等代数课程创新教材(丘维声)——1.3笔记+习题
  12. ETL工具kettle 日志表配置及工作流程
  13. 高斯过程回归,得到预测标签和不确定度度
  14. GET请求淘宝H5页面获取商品信息
  15. 用Scrapy和Selenium爬取动态数据
  16. Python自学笔记(二)命令行参数使用
  17. 火星人怒批古董微积分,误人子弟
  18. 软考高级软件架构风格定义以及分类
  19. 1M带宽、1Mbps、1Mb/s 区分
  20. 如何转换DWG文件格式?来试试这两种方法

热门文章

  1. wx-charts 微信小程序图表插件
  2. 软件工程实践2017结对第二次作业
  3. python-matplotlib学习(1)
  4. 法拍房数量激增数百倍!来看看这里面的数据...
  5. 简析Kubernetes八大重要特性
  6. 从计算机基础知识到机器学习第1堂课,最适合新手的5场直播来了
  7. 百度吹过的牛实现了,你的呢?5本书带你搞定AI前沿技术
  8. linux内核start_kernel分析
  9. 7000 字,四年多 Java 的 BAT 面经分享!
  10. 重磅!GitLab 在中国成立公司极狐,GitHub 还会远吗?