摘要:随着社会经济的快速发展,高科技的发展水平也得到了逐步的提高,由此在一定程度上导致电子游戏、音频、视频等多媒体设施的使用频率越来越大。截止到目前为止,在Windows环境下设计实时音视频的数据采集与传输技术主要有三种方法,即WindowsMedia、VFW和DirectShow。文章对实时音视频数据采集和传输技术进行了探讨。
关键词:多媒体;音视频;数据采集;非线性编辑;多媒体设施
目前,实时音视频的数据采集和传输技术应用十分广泛,例如公司里常用的视频会议、学校中常见的远程教育、超市里的视频监控、大家常用的视频通话等。因为在不同的场合对于实时音视频数据采集和传输技术的要求也有所不同,所以根据实际问题选择合适的技术设计是非常重要的。人们之前使用的采集设备虽然使用方便,但是由于硬件的相关性强,使用起来会发生运用不灵活的现象,在一些比较复杂的场合就不太适合应用。现下使用率最高的就是WindowsMedia、VFW和DirectShow三种技术软件,下面本文就针对这三种技术进行简单的介绍,希望可以为人们更好地使用提供方法。
1使用VFW进行音视频数据采集
VFW是在1992年由微软公司推出的一项新的音视频方面的技术手段,主要是为了解决当时存在的数学音视频中遇到的问题。VFW的使用极大地方便了音视频的数据采集,不仅可以对数据进行实时采集、编辑和播放的功能,还能开发其他复杂的应用。VFW的不同模块具有不同的功能,其中最常用的就是VFW中的AVICAP模块,它可以用来实现视频捕捉的功能。首先,我们要在应用程序中创建一个AVICAP的窗口;其次,可以通过向这个窗口发送消息来实现对窗口的控制。AVICAP的优点是可以对数据实现全面的捕捉,并将捕捉到的数据写入磁盘中,可以给用户提供预览的功能;缺点是不擅长使用非文件型的视频、软件等,在程序的运行过程中,不能通过改编程序对这些视频、软件的格式及属性进行更改,而只能像平常一样,在对话框里设置这些格式和属性。在把音视频的数据转化为文件的时候,VFW最擅长的就是对AVI文件的转换。VFW进行音视频捕捉的过程可以简单地概括成:创建需要进行捕捉的窗口、对需要回调的函数进行注册处理、获得需要捕捉的窗口的设置功能、设置参数等,将这些工作处理完毕后,就要断开主机与捕获设备的连接,以防数据的丢失。VFW还具有对音视频数据的压缩和解压、对文件信息的更改、控制图像显示等主要功能。现如今,VFW的使用已经远远不能满足人们的需求,尤其是在微软已经放弃了对VFW的后续开发之后,它在应用方面存在的不足也越来越明显。所以在现在的工程应用中,除非我们只有VFW这一个设备可以使用或是只是利用VFW就可以完成我们需要处理的工作之外,已经很少使用VFW了。替代它在工程中地位的是DirectShow,下面我们就对DirectShow的性能进行简单的介绍。
2使用DirectShow进行音视频数据采集及传输
很多种Filter组成的,在应用程序工作的时候就需要DirectShow中的Filter支持它的运行,不过Filter并没有限定的条件,程序员可以根据需要编制不同的Filter。应用程序运行过程中涉及到的FilterGraph,就是由很多Filter组成的,我们可以将这些Filter根据用途进行分类,大致的分为源Filter、传输Filter和渲染Filter三部分。为源Filter提供数据的数据源来自于文件系统,也可以通过互联网、采集设备等获取,源Filter中的数据在经过传输Filter时会得到一些处理,处理后由渲染Filter输出,数据在经这三方面的处理后,输出的就不再是原来的数据,而是一些声卡、显卡或者是文件。随着高科技的发展,视频采集设备也得到了逐步的完善。目前,常用的视频采集的设备有视频采集卡、USB摄像头等,无论是哪种设备,都可以使用DirectShow进行音视频的处理工作。当视频采集卡不具备对音频的信息采集功能时,可以用计算机自带的声卡替代视频采集卡的不足。采集到的数据可以利用上述所说的办法进行处理,转化原有的格式,得到想要的文件。这种办法可以将数据处理的工作最大限度的简单化,不过在对这些数据进行网络传输时,却因为DirectShow中没有相应的Filter,而无法进行网络传输。除了上面所说的三种常用的Filter外,还有一种Filter叫做包装Filter,它的工作主要是在内部完成与硬件的交互工作。其中经常使用的是在实时音视频中针对声卡和WDM驱动的包装Filter,而在VFW视频采集卡只是有时会用到。DirectShow还有一个优点就是,由于它自身支持对内核模式下的数据传输,而减少了数据从内核到用户,不同模式间转换的计算量,避免了不必要的麻烦,提高了工作效率。实时采集到的音视频数据如果在传输过程中有特殊的要求,比如需要在IP网络上传输、对传输的时间有严格的控制等,在这时,就需要程序员靠自身的技能编写程序,而不能运用以往的程序来完成任务。用于数据流的广播和接收的Filter只在很少的地方能够直接进行应用,一般情况下,使用这类的Filter时,需要首先对其中的Sample进行编译连接,在生成DLL后,利用regsvr32的命令行状态,对生成的DLL进行注册,注册完成后就可以直接投入使用了。因为实时音视频的信息量大、涉及范围广,再加上它自身的实用性很强的特点,导致在TCP网络中的通信状态不太好,常常会遇到信号不良的状况。为了解决这种问题,就需要在运输层加上RTP和RTCP来保障数据传输的质量,这样无疑会加大我们的工作量。在这种情况下,使用DirectShow就显得不太合适,而WindowsMedia的优势就凸现出来了。下文对WindowsMedia的功能及用途进行简要的介绍。
3使用WindowsMedia进行音视频数据采集及传输
WindowsMedia是微软专门针对流媒体开发的一项应用,包括Audio、Video、Encoder、Services等主要组成部分。这些主要组成部分各有各的用途,其中WindowsMediaEncode可以直接对音视频中的数据进行编码、格式转换等,除此之外,还可以利用WindowsMediaEncode实现一些特殊的功能;WindowsMediaServices主要用做流媒体信息的发布,常常与微软公司内部的服务器捆绑在一起,用来获取流媒体的内容,并将其传播出去。这些WindowsMedia的组成部分形成了一个完整的工作系统,可以对实时音视频的数据进行不同阶段的处理工作。为了保证信息传输过程中的安全,微软公司还为此专门开发了MMS协议,为网络安全提供了很好的QOS保障,对于需要在网上进行传输的实时音视频数据而言,相比于前面介绍的两种方法,WindowsMedia相对更安全一些。WindowsMedia在构建实时音视频数据的采集及传播时,有一个特定的过程。我们可以将这个过程简单地概括为:运行WindowsMediaEncoder软件,在资源属性中选择相关设备的属性,在Output中选择目标的文件名,在Compression中选择需要压缩的文件的格式,在完成这些设置之后,就可以开始实施音视频的数据采集了。数据采集成功后,在计算机中点开WindowsMediaPlayer,然后选择File-OpenURL就可以查看已经采集到的信息。进行屏幕捕捉和进行信息采集的步骤有所不同,它是在Source中选择Video和ScreenCapture,然后在下拉菜单中选择需要捕捉的区域,在不做特殊选择的情况下,捕捉到的是整个屏幕的内容,为了方便以后的查看,可以将捕捉的内容以文件的格式保存下来。4结语根据本文的论述可以知道,在实施音视频的数据采集过程中使用VFW的情况越来越少,目前替代它的数据采集功能的是DirectShow。DirectShow不仅在非线性编辑方面的功能十分强大,而且任何一种设备和数据源都可以利用它实现数据采集的目的。不过在利用网络将多媒体的数据进行流式传输方面,DirectShow还存在很多弊端,这时就需要运用WindowsMedia解决数据在网络传输中遇到的难题,作为微软专门为此设计的一项应用,WindowsMedia在数据传输的过程中,可以更好地保障数据的质量安全,网络协议与网络传输方面都为它的数据传输提供了绝对的便利,可以收到事半功倍的良好效果。
参考文献
[1]张红林,马永涛,刘开华.基于LabWindows/CVI的音视频实时采集压缩系统[J].电视技术,2014,(5).
[2]范晨.基于嵌入式系统的危险区域探测机器人数字音视频实时传输系统设计[D].山东大学,2010.
[3]王峰.基于Hi3516的音视频采集及网络传输技术研究[D].西安电子科技大学,2013.
作者:陆开华 单位:云南音像出版社