`
fanxiaojun
  • 浏览: 56205 次
  • 性别: Icon_minigender_2
  • 来自: 广州
社区版块
存档分类
最新评论

视频监控开发的最佳方法

阅读更多

     在开发视频监控系统应用软件时,大家往往把关注的焦点集中于数字音/视频的编解码的实现上,而忽略了视频监控系统应用软件的整体架构。当然视频监控的核心也是在于音视频编解码上,佰锐的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接口丰富,方便与第三方业务集成;专业技术支持,性能稳定可靠。

分享到:
评论

相关推荐

    大华视频监控web二次开发.zip

    在IT行业中,视频监控系统的二次开发是一个重要的领域,特别是在企业级应用中,它涉及到系统集成、数据处理和用户体验优化等多个方面。"大华视频监控web二次开发.zip"这个压缩包文件,显然提供了一个用于Web平台的...

    《C_#项目开发全程实录》.之.家庭视频监控系统教程

    家庭视频监控系统教程.rar"则提供了详细的开发指南,涵盖了系统设计、实现步骤和问题解决方法,是深入理解C#在实际项目中应用的宝贵资源。 通过这个项目,读者不仅可以提升C#编程技能,还能了解到视频处理、网络...

    阿里云 专有云企业版 V3.8.0 视频监控 开发指南 20190621.pdf

    阿里云专有云企业版V3.8.0的视频监控开发指南主要涵盖了与视频监控相关的开发和使用规范,旨在帮助用户理解和应用阿里云提供的视频监控服务。以下是根据指南内容整理出的重要知识点: 1. **法律声明**: - 用户在...

    阿里云 专有云企业版 V3.7.1 视频监控 开发指南 20190124.pdf

    综上所述,阿里云专有云企业版V3.7.1的视频监控开发指南是一个全面的开发资源,涵盖了服务的法律使用条件、操作指南、技术细节和最佳实践,旨在帮助开发者高效、安全地构建和集成视频监控功能。

    局域网视频监控(课设)

    局域网视频监控系统是一种在有限地理范围内的网络监控解决方案,通常用于家庭、办公室或小型商业环境。这个课程设计旨在让学生了解并实现这样的系统,掌握网络通信、视频处理和流媒体传输的相关技术。 1. **局域网...

    01道路运输车辆智能视频监控报警系统终端技术规范-TCS

    综上所述,《道路运输车辆智能视频监控报警系统终端技术规范》(T/ZJRTA01—2018)是一项全面而细致的标准,它不仅为智能视频监控报警系统的开发提供了指导,还对提升浙江省道路运输行业的安全水平起到了重要作用。

    安防天下智能网络视频监控技术详解与实践part1

    第1章 视频监控技术概述 1 1.1 引子 2 1.1.1 安全防范的雏形 2 1.1.2 网络视频监控 2 1.1.3 智能视频识别 2 1.1.4 智能网络视频监控 3 1.2 视频监控技术发展过程 3 1.2.1 模拟视频监控时代 4 1.2.2 ...

    科达视频监控CU客户端

    【科达视频监控CU客户端】是一款专为视频监控系统设计的客户端软件,由科达公司开发,主要用于管理和操控科达品牌的视频监控设备。这款客户端提供了全面的监控功能,包括实时视频查看、录像回放、云台控制、报警管理...

    爱特生短信彩信开发平台视频监控方案

    【爱特生短信彩信开发平台视频监控方案】是一个针对深圳A公司安防需求的解决方案,该方案利用爱特生的短信彩信开发平台,通过集成网关的方式将移动通信技术,特别是彩信传输,整合进视频监控系统。深圳A公司期望能够...

    servfox-R1_1_3.rar_SERVR1_servfox_监控_视频监控_视频监控源码

    本文将聚焦于一款名为“SERVFox R1.1.3”的嵌入式实时视频监控系统,通过对源码的深入剖析,探讨其核心技术和实现机制,帮助读者理解和掌握视频监控系统的设计与开发。 首先,让我们了解SERVFox的核心功能。这款...

    实战突击:C#项目开发案例之家庭视频监控系统

    本源程序在Windows 2000、Windows 2003、Windows 7下开发的,程序测试环境为Windows Server ... 分辨率:最佳效果1024×768。  开发环境:Microsoft Visual Studio 2008;  程序运行环境:.NET Framework 3.5。

    基于Arduino开源平台的WIFI视频监控小车

    随着物联网技术的发展和成本的进一步降低,基于Arduino的WIFI视频监控小车有望成为智能家居、智能工厂等领域的重要组成部分,其应用潜力巨大,值得深入研究和开发。 综上所述,本项目通过整合Arduino开源平台与WIFI...

    Android应用- 远程视频监控程序源码.zip

    在Android平台上,开发一款远程视频监控程序涉及到许多关键的技术知识点,这些知识点构成了程序的核心功能。以下将详细解析标题和描述中提及的要点,并基于提供的压缩包文件内容进行深入阐述。 首先,"Android应用...

    海康威视频视频开发包SDK

    这款SDK提供了丰富的功能,涵盖了视频流处理、图像分析、设备控制等多个方面,是构建高效、稳定、安全的视频监控系统的基础。 一、视频流处理 SDK中的核心组件之一是视频流处理模块,它负责从摄像头接收实时视频...

    web3.0开发包.rar_web3.0demo_海康web3.0_海康二次开发_海康威视_海康视频web3.0

    在视频监控领域,这意味着能够智能分析视频内容,识别出特定对象或行为,比如人脸识别、行为分析等。 海康威视是全球领先的安防产品及解决方案提供商,其Web3.0开发包很可能包含了一系列SDK(Software Development ...

    课程设计报告《某中小学视频监控系统设计报告》.doc

    《某中小学视频监控系统设计报告》是一份详细阐述在职业技术学院计算机系进行的课程设计项目。这份报告旨在探讨如何为中小学构建一个有效的视频监控系统,以保障校园安全,提高管理效率。 第一章概述 1.1 课程设计...

    远程视频视频监控源程序(C++实现)

    首先,C++是一种通用的编程语言,以其强大的性能和灵活性被广泛应用于系统软件、游戏开发、桌面应用以及包括视频监控在内的各种复杂系统。在C++中实现远程视频监控系统,意味着你需要深入理解面向对象编程的概念,...

    安卓Android源码——远程视频监控程序源码.zip

    在安卓(Android)平台上开发应用程序时,源码是学习和理解系统运作机制的关键。"安卓Android源码——...通过深入分析和实践这个源码,开发者不仅可以理解远程视频监控的工作原理,还能学习到实际开发中的最佳实践。

    远程视频监控系统源程序

    远程视频监控系统是一种基于计算机技术、网络技术和视频技术的现代化监控解决方案。该系统允许用户通过互联网或其他网络在远离监控地点的地方实时查看、控制和管理监控摄像头的视频流。在这个"远程视频监控系统源...

Global site tag (gtag.js) - Google Analytics