《科技创新与品牌》杂志社学术交流

基于DirectShow的多媒体网络会议系统



        导读:本文介绍了DirectShow技术的基本概念,提出了基于DirectShow技术的多媒体网络会议系统,构建了系统框架,对系统的音视频采集、处理及传输做了详细的介绍。在实验中取得了良好的效果,具有推广价值。
        随着信息技术的迅猛发展,传统的会议方式和信息传输方式已经不能满足人们的社会需求,新的多媒体技术应运而生。视频会议系统把多媒体技术与网络、使用者融为一个有机整体,三者之间既相互联系又相互影响,即需要合理有效地利用网络资源以满足视频会议的需要。在网络上建立视频会议系统需要多种技术支持,是比较复杂、完整的多媒体应用系统。本文介绍了一种基于DirectShow的多媒体网络会议系统。

        一、DirectShow技术简介

        DirectX软件开发包是微软公司提供的一套在Windows操作平台上开发高性能图形、声音、输入、输出和网络游戏的编程接口。作为DirectX家族的成员,DirectShow能够在Windows平台上处理各种格式的媒体文件的回放,音频、视频的采集等高性能的多媒体应用,并提供了相应完整的解决方案。
        DirectShow使用Filter Graph来管理整个数据流的处理过程,各个模块叫做Filter。按照功能来分,Filter可以分为三类:源过滤器(Source Filters)、变换过滤器(Transform Filters)和提交过滤器(Rendering Filters),分别用来引入获取的数据、获取并处理数据、提交数据给外设。有了这样的协同工作,应用程序就按照一定的意图建立起相应的Filter Graph,通过Filter Graph Manager来控制整个的数据处理过程,就实现了应用程序与DirectShow系统之间的交互。如图所示。

Directshow系统框图


        
为提高系统的稳定性,Windows操作系统对硬件操作进行了隔离,为这些硬件设计包装Filter,而包装Filter内部完成硬件与驱动程序的交互。这样的设计使得编写DirectShow应用程序的开发人员,可以从为支持硬件而需做出的特殊处理中解脱出来。

        二、基于DirectShow的视频会议系统的设计

        1.系统框图
        本系统的设计主要分为两大模块:第一,发送模块,在该模块中可以实现音视频的实时捕捉和发送。第二,接收模块,在该模块中可以实现音视频的接收和播放功能。其系统框图如下。

系统框图


        
2.系统关键技术的实现
        (1)使用DirectShow实现音视频的采集播放
        本设计采用的是WDM驱动模型进行视频捕捉,其支持更多新特性,捕捉卡以一个Filter的形式出现。当视频捕捉卡正确安装到系统中后,使用Graph Edit插入Filter,可以在Video Capture Source目录下看到代表捕捉卡的那个Filter。
        将Capture Filter加入Filter Graph之后,可以使用Render Stream接口继续各个Output Pin的连接。要实现视频捕捉到文件,可以使用Render Stream生成AVI文件。
        音频与视频的播放分别使用Windows 操作系统和DirectShow自带的Rendering Filter,音频播放使用DirectSound device,视频的播放采用Video Mixing Renderer 9,它不仅能提供更多的功能,而且更稳定、可靠。
        (2)视频数据的发送和接收模块设计
        设计中,视频数据发送模块以组播方式发送视频流,视频数据接收模块对视频流进行接收和实时播放显示。在设计系统时,要求监控中心端在接收视频数据前应向相应的监控发送数据请求,因此建立两个通道:控制通道和数据通道。视频流的接收端播放过程如下:
        •输入发送端IP地址,请求发送数据。
        •得到确认消息后,启动接收播放数据线程,创建用户界面窗口。
        •建立Winsock2Multicast Socket,根据发送端传回的组播地址及端口号加入此IP组播组。
        •建立DirectShow Filter Graph,启动运行。
        •在DirectShow请求数据时,从Socket中读取数据(每个IP数据包为64K)送至Buffer,此后视频流的解码和播放都由DirectShow来完成。
        在完成总体设计后,我们把前面的设计用程序语言表示出来,可以交付计算机运行。本设计采用的是VC++6.0结合DirectShow进行程序设计的,具有良好的可执行性。

        三、结束语

        本系统在Windows系统中,利用VC++6.0和DirectShow为开发工具,实现了视频的捕捉、传送、播放等功能。充分利用了DirectShow工具中提供的各类Filter和接口,使得实现变得简单易行。


 

参考文献:

[1]陆其明.DirectShow开发指南[M].北京: 清华大学出版社, 2003.
[2]刘炜玮.Visual C++视频/音频开发实用工程案例精选[M].北京人民邮电出版社,2004.
[3]朱志雄,林秀珍,董宏国,靳福.基于DirectShow的音/视频传输系统设计与实现[J].铁路计算机应用,2009.8.
[4]魏立成,朱桂林.基于DirectShow的视频采集系统的设计与实现[J].计算机工程,2005, 31(14):187 - 189.
[5]盛健,李晓勇.DirectShow过滤器组件开发技术及其应用实例[M] .微型机与应用, 2004(1) .


基金项目:
贵州大学创新基金(研理工2009007)