-2017-0引言实时音视频数据采集和网络传输系统应用广泛,如视频会议、远程教育、实时视频监控、视频通话等。多媒体技术的发展过程中产生了各种各样的文件格式和数据压缩格式,实时音视频数据采集和传输技术的发展历程和多媒体技术的发展历程类似,也有各种不同的采集技术和传输技术可供选择,根据实际问题的需要,选择合适的技术设计音视频数据实时采集和传输系统,是十分重要的。在Windows环境下,实时音视频采集可以使用采集设备(如采集卡)自带的SDK进行,此类方法的优点是使用方便,缺点是硬件相关性强,不够灵活,不能适应复杂应用场合的需要。更常用的是使用微软公司提供的VFW(videoforWindows)、DirectShow和WindowsMedia。1使用VFW进行音视频数据的实时采集为解决数字音视频应用领域的问题,微软公司在1992年推出了VFW[7],应用程序使用VFW提供的接口可以方便地实现音视频数据实时采集、编辑、播放等通用功能以及开发各种复杂的应用。在VC++6.0上使用VFW要包含文件vfw.h和vfw32.lib。视频捕获功能主要存在于VFW的AVICAP模块,应用程序创建一个AVICAP窗口,并通过向窗口发送消息来控制窗口的行为。AVICAP对视频捕获提供全面的支持,如将捕获到的数据写入磁盘文件和预览,然而,对于其它非文件型的使用则不够灵活,视频的格式和属性不可以在程序运行过程中通过编程进行改变,只能通过对话框进行设置。在将实时音视频数据采集到文件的场合,VFW重点支持的是AVI文件。使用VFW进行音视频捕获的主要步骤为[6]:创建捕获窗口、注册回调函数、获取捕获窗口的缺省设置、设置捕获窗口参数、与捕获设备连接并获取捕获设备能力、设置捕获窗口显示模式、捕获视频数据到文件或者缓存,工作完毕,断开与捕获设备的连接。VFW的其它主要功能包括音视频数据的压缩和解压、AVI文件的编辑处理、以及图像显示(DrawDib模块)。从Windows98开始,微软推出了WDM(Windowsdrivermode)设备驱动模式,现在的音视频数据采集设备都支持WDM,经过一层模拟子系统处理后,虽然VFW可以在Win98、Win200、WinXP等各种平台上使用,但由于VFW体系在视频收稿日期:2007-10-18E-mail:xudianwu@tom.com作者简介:徐殿武(1949-),男,硕士,讲师,研究方向为图像处理和程序设计。实时音视频数据采集和传输系统设计方法的比较研究
徐殿武(中国石油大学(北京)机电学院,北京102249)摘要:在Windows环境下设计实时音视频数据采集和传输系统常用的3种方法是VFW、DirectShow或WindowsMedia。这3种方法代表了Windows在实时音视频数据采集和传输技术上的主要内容,每种方法各有自己的适用场合和优缺点。在系统仿真、电子游戏、音视频数据非线性编辑等应用中,最好选用DirectShow。在需要将采集到的数据进行实时网络传输的场合,使用WindowsMedia会收到事半功倍的效果。而VFW在数据采集方面用的已经不多,但在AVI-2文件的非线性编辑处理和图像显示方面仍然具有广泛的应用。关键词:音频;视频;数据采集;多媒体;实时中图法分类号:TP311.1文献标识码:A文章编号:1000-7024(2008)08-2017-03Comparisonandstudyonmethodsofreal-timecaptureandtransmissionofaudioandvideodatasystemdesignXUDian-wu(FacultyofMechanicalandElectronicEngineering,ChinaUniversityofPetroleum,Beijing102249,China)Abstract:UnderWindowsenvironment,themaindesignmethodsofreal-timecaptureandtransmissionofaudioandvideodataareVFW,DirectShow,andWindowsMedia.Theadvantagesanddisadvantagesofabovethreemethodsarediscussed,andatthesametime,themainprogrammingstepsarepresented.Inthecaseofsystememulation,games,videoediting,usingDirectShowisabetterchoice.Inthecaseofnetworkapplication,usingWindowsMediaisthebest.VFWisanoldmethodforaudioandvideocapturing,butinthecaseofAVI-2filenonlineareditingandimagedisplay,VFWisstillusefulandconvenient.Keywords:audio;video;dataacquisition;multimedia;real-time2008年4月计算机工程与设计Apr.2008第29卷第8期Vol.29No.8ComputerEngineeringandDesign-2018-会议和PC/TV应用方面的先天不足,加之微软已经不再对VFW进行后续开发,所以在实时音视频数据采集系统设计中,除非VFW已经满足你的工程应用需求或者你只有VFW驱动的采集设备,一般不再使用VFW,而更常使用的是DirectX之Direct-Show[3]。但这并不是说VFW已经没有任何用途,在AVI文件的编辑处理(AVI-2类型)和图像显示方面VFW仍然经常被使用。2使用DirectShow进行音视频数据的实时采集和网络传输DirectShow是DirectX的一部分,用于进行多媒体流处理,它支持多种文件格式和压缩格式,如ASF、MPEG、MP3、AVI等,既支持WDM模式的捕获设备也支持老的VFW设备,可以对硬件加速设备进行自动探测和使用,也可以运行在没有硬件加速设备的系统中。图1是DirectShow系统架构示意图[1]。DirectShow中的基本工作模块叫Filter,若干个Filter组成一个FilterGraph。DirectShow提供了很多种Filter供应用程序使用,程序员也可以编制自己的Filter。如图1所示,应用程序通过FilterGraphManager来控制FilterGraph的工作,一个FilterGraph大致由3部分组成,源Filter、传输Filter和渲染Filter。FilterGraph的数据源可以来自文件系统、Internet、WDM或VFW采集设备、MPEG2硬件解码器等,这些数据源为源Filter提供数据,经过传输Filter处理后交由渲染Filter进行输出。输出可以是声卡和显卡,也可以输出到文件。视频采集设备的种类较多,包括视频采集卡、DV机、模拟电视接收、USB摄像头等,DirectShow对这些视频采集设备都提供了很好的支持。如果视频采集卡上没有音频数据采集功能,可以使用计算机内安装的声卡进行实时音频数据采集。采集到的音视频数据,可以使用DirectShow提供的各种Filter进行处理,例如数据的压缩和格式的转换,最后通过输出Filter写成文件或进行渲染。图2就是将DV捕获的音视频数据写成AVI-1文件并预览的FilterGraph[1]。DirectShow提供的音视频数据采集的源Filter大大简化了数据采集的编程工作。而针对采集到的多媒体数据的网络传输,DirectShow则没有现成的Filter可供使用。图1中的Filter工作在用户模式,而WDM或VFW采集设备工作在内核模式,DirectShow为这些硬件提供了工作在用户模式下的包装(Wrapper)Filter,在包装Filter内部完成与硬件的交互。在这些包装Filter中,除针对VFW视频采集卡的包装Filter不常使用以外,针对声卡的包装Filter和针对WDM驱动的硬件的包装Filter是在实时音视频采集中最常使用的Filter。DirectShow对WDM硬件的支持还包括支持内核模式下的数据传输,从而避免了从内核模式到用户模式转换的大量计算和内存之间的复制,大大提高了系统的性能[3]。实时采集到的音视频数据如果要即时在TCP/IP网络上传输,一般需要由程序员自己编写这方面的程序,DirectShow系统仅在DSNetworkSample中提供了用于MPEG-2数据流的广播和接收的Filter[1],一般说来,这远远不能满足各种网络传输的需要。要使用该Filter,对该Sample进行编译连接后,生成一个名为dsnet.ax的DLL,使用regsvr32在命令行状态下,将这个DLL注册,就可以使用它了。由于实时音视频数据量巨大,实时性强,而TCP/IP网络通信状态复杂,要达到实时音视频数据所要求的通信质量,最好在运输层上加上RTP(实时传输协议)和RTCP(实时传输控制协议)来保证实时传输的质量,DirectShow系统没有提供这方面的Filter。如果将一个实时音视频数据采集传输系统的工作划分成3部分:采集、加工处理、网络传输和接收,则Direct-Show在网络传输和接收部分提供的功能相对薄弱,而这正是WindowsMedia系统的强项。3使用WindowsMedia进行音视频数据的实时采集和网络传输WindowsMedia是微软公司开发的用来处理流媒体的专业开发平台,其媒体内容采用ASF文件格式,主要部分包括WindowsMediaAudio/Video/Encoder/Services/Player/RightsManager及各个部分的SDK。用户可以直接使用微软提供的WindowsMediaEncoder(无须编程)进行实时音视频采集数据的编码、格式转换(支持WMA、WMV、ASF、AVI、WAV、MPG、MP3等)、屏幕捕捉[5]、网络流化等,也可以利用WindowsMediaEncoderSDK编程实现某些应用场合需要的特定功能。WindowsMediaServices部分则负责流媒体内容的发布,一般与微软公司的服务器集成,如WindowsMediaServices9和WindowsServer2003捆绑在一起。WindowsMediaPlayer负责流媒体内容的获取和播放。WindowsMedia这3个主要部分,分别针图1DirectShow系统ApplicationCommandsEventsDirectShowFilterGraphManagerFilesystemInternetRing3Ring0SourceFiltersTransformFiltersRenderingFiltersLegacyVCM/ACMCodecsFileSystem
DirectSoundDirectDraw
SoundCardVideoGraphicsCardLegacyVFWCaptureDevicesHardwareMPEG2DecodersKernelStreamingArchitectureWDMCaptureDevices-2019-对实时音视频数据的采集、编码制作,网络传输和接收播放,形成一个完整的实时音视频数据采集、加工、传输的链条。为了解决音视频数据网络传输的质量保证问题,微软公司为WindowsMedia开发了MMS协议[4],WindowsMedia还支持RTSP(realtimestreamingprotocol,RFC2326),可见,WindowsMe-dia在网络协议方面,为音视频数据的实时网络传输提供了很好的QoS保证,如果采集到的音视频数据需要在网络上实时进行传输,使用WindowsMedia是非常适合的。下面描述的是使用WindowsMedia直接构建一个实时音视频数据采集和网络传输系统(无须编程)的步骤[4]。WindowsMedia系统自带的可以直接运行的WindowsMe-diaEncoder软件,支持使用音视频数据采集卡或USB摄像头等进行实时数据采集并将采集到的数据编码为WindowsMedia格式。具体用法是,运行WindowsMediaEncoder软件,在Source标签中选好视频和音频设备以及这些设备的属性,在Output标签中选择目标文件名,在Compression标签中选择好音频和视频数据的压缩格式等,都选择好以后,点击StartEncoding就可以开始音视频数据的实时采集过程了。如果是进行屏幕捕捉,在Source标签中选择Video以及ScreenCapture,捕捉区域可以通过一个下拉列表来选择,默认为全屏,屏幕捕捉到的内容也可以存储为文件。不管是实时音视频数据采集还是屏幕捕捉,WindowsMediaEncoder支持将获得的数据即时流化,在本机广播或推发布到运行WindowsMediaServices的服务器上,供网络上的其它用户下载或点播。将数据流化的方法为:在Source标签中选择一个源(采集设备、屏幕捕捉、本地文件),在Output标签中,在本机广播选PullFromEncoder并设置一个端口号,如果要发布到一个服务器,选PushtoServer,同时设置好服务器的名字和发布点名称(流化的同时也可以存储为本地文件),设置好以后,点击StartEncoding就开始运行了。在本机或其它计算机上运行WindowsMediaPlayer,选File->OpenURL就可以观看采集到的内容或捕捉的屏幕内容了。如果你的应用需要特殊的功能,就要使用WindowsMediaSDK编程实现实时音视频数据的采集和传输[4-5]。4结束语VFW作为实时音视频数据采集的应用已经十分有限,Di-rectX对VFW的支持主要是考虑到向后兼容性,使用VFW驱动的视频采集设备已经很少(新的设备驱动模式是WDM),VFW现在主要用于AVI文件编辑(如视频图像叠加[8])和图像的显示等。DirectShow作为DirectX的一部分,在实时音视频数据的采集方面是应用的主流,支持各种采集设备和数据源,同时在非线性编辑方面具有强大的功能,在系统仿真、电子游戏、音视频数据非线性编辑等应用中,最好选用DirectShow,但在将多媒体数据在网络上进行流式传输方面,DirectShow提供的功能相对较弱。WindowsMedia是微软为解决音视频数据实时采集和网络传输而专门设计的,其ASF格式与RealNetworks公司的Real-Media、Apple公司的QuickTime一样,是最为流行的流媒体格式之一。更重要的是,WindowsMedia为数据传输的质量提供了网络通信协议方面的保证,所以,在音视频数据网络传输方面,其功能强于DirectShow,如果设计用于网络传输的实时音视频数据采集和传输系统,使用WindowsMedia就可以得到其网络协议和网络传输方面的便利和优越性,收到事半功倍的效果。参考文献:[1]DirectX.DocumentationforC++[EB/OL].MicrosoftCorpora-tion,2005.[2]WindowsMedia9.5SDK[EB/OL].MicrosoftCorporation,2004.[3]陆其明.DirectShow开发指南[M].北京:清华大学出版社,2003.[4]陆其明.WindowsMedia编程导向[M].北京:清华大学出版社,2005.[5]刘其洪,李伟光,叶邦彦,等.基于Windows流媒体技术的网络屏幕广播[J].微计算机信息,2004(9):129-130.[6]刘肃亮.基于VFW的视频应用程序开发[J].西北大学学报,2003(6):37-41.[7]PlatformSDKforWindowsXP[EB/OL].MicrosoftCorporation,2004.[8]徐从东,罗家融,王树坤.基于VFW的视频图像叠加与播放方法[J].计算机工程与设计,2007,28(1):100-102.
参考文献:[1]代科学,李国辉,涂丹,等.监控视频运动目标检测减背景技术的研究现状和展望[J].中国图象图形学报,2006,11(7):919-927.[2]艾海舟,吕风军.面向视觉监视的变化检测与分割[J].计算机工程与应用,2000,37(5):75-77.[3]林洪文,涂丹,李国辉.基于统计背景模型的运动目标检测方法[J].计算机工程,2003,29(16):97-99.[4]RittscherJ,KatoJ,JogaS,etal.Aprobabilisticbackgroundmodelfortracking[C].Dublin,Ireland:ProceedingsofEuropeanConfe-renceonComputerVision,2000:336-350.[5]StaufferC,GrimsonW.Adaptivebackgroundmixturemodelsforreal-timetracking[C].FortCollins,Colorado,USA:ProceedingsofIEEEInternationalConferenceonComputerVisionandPat-ternRecognition,1999:246-252.[6]HorprasertT,HarwoodD,DavisLS.Astatisticalapproachforreal-timerobustbackgroundsubtractionandshadowdetection[C].Kerkyra,Greece:Proceedingsofthe7thIEEEInternationalConferenceonComputerVision,FrameRateWorkshop(ICCV'99),1999:1-19.[7]王栓,艾海舟,何克忠.基于差分图像的多运动目标的检测与跟踪[J].中国图形图像学报,1999,4(6):470-474.[8]候志强,韩崇昭.视觉跟踪技术综述[J].自动化学报,2006,32(4):603-617.(上接第2016页)