欢迎来到天天文库
浏览记录
ID:40152673
大小:2.22 MB
页数:28页
时间:2019-07-23
《基于directshow的媒体播放器设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、基于DirectShow的媒体播放器设计学号:200706705作者:国艳松基于DirectShow的媒体播放器设计研究背景与意义开发相关技术DirectShow体系结构播放器的功能设计智能连接DirectShow播放器的实现播放器系统演示1.研究的背景与意义随着信息技术的发展,流媒体播放器迎来新的挑战。DirectShow简化多媒体应用程序的开发,不必考虑复杂的数据流格式和不同的终端设备,以及数据同步的问题。DirectShow给多媒体程序开发员提供了标准的、统一的、高效的API接口2.开发相关技术DirectXSDK9.0微软将DirectX定义为“硬件无关性”,从而提高设备性
2、能MicrosoftVisualC++6.0平台Windows提供的可视化集成开发环境3.DirectShow体系结构COM组件FilterFilterGraphFilterGraphManager3.1COM组件是一种软件架构,它规定了不同的对象使用统一的协议来进行通讯的一套机制。COM组件的特点COM组件类型GUID3.2过滤器(Filter)DirectShow是基于模块化,每个功能模块都采取COM组件方式,称为过滤器(Filter)。Filter存在形式Filter分类Filter状态3.3过滤器图(FilterGraph)过滤器图(FilterGraph)是过滤器(Fil
3、ter)的容器。过滤器图作用过滤器图数据传输模式过滤器图状态3.4过滤器图管理器(FilterGraphManager)应用程序用于控制过滤器图和过滤器的COM组件。过滤器图管理器功能:1:状态改变2:参考时钟3:Graph事件4.播放器的功能设计本论文中要求基于DirectShow设计播放器,根据对媒体的分析得到系统的主要功能如下:媒体播放器播放器的基本功能截图功能全屏功能声音控制功能换肤功能播放模式控制播放列表操作6.智能连接是构建FilterGraph的一种方法智能连接的优点1:与传统方法相比,具有智能化2:避免了代码冗余智能连接原理7.DirectShow应用程序开发创建过
4、滤器管理器实例使用过滤器管理器构建过滤器图过滤器管理器控制过滤器图和流数据通过过滤器。应用程序释放过滤器管理器和所有的过滤器。7.1创建过滤器管理器实例首先初始化DirectXSDK动态库:CoCreateInstance(CLSID_FilterGraph,NULL,CLSCTX_INPROC_SERVER,IID_IGraphBuilder,(void**)&mGraph)7.2应用程序构建过滤器图利用IGraphBuilder::RenderFile函数,进行智能连接该参数提供源文件名,自动加入必要的Filter完成这个文件的回放FilterGraph构建。RenderFil
5、e函数机理:分析文件路径中是否有协议名(如http、ftp),如果有,则在注册表的位置下寻找这个协议名,找到了则使用SourceFilter键值指定的CLSID。找不到的情况下,FilterGraphManager就创建一个成为FileSource的Filter。7.2应用程序构建过滤器图文件路径中不包括协议名,FilterGraph就分析这个文件的扩展名,然后到注册表中区匹配扩展名。如果找到了,就根据SourceFilter键值指定的CLSID创建Filter。若找不到,FilterGraphManager就进行文件的校验字节判断。如果没有符合的,SourceFilter就要创建
6、一个FileSource的Filter.7.2应用程序构建过滤器图IGraphBuilder::RenderFile使用上述方法检测文件的类型,确定并找到正确的源过滤器(SourceFilter)。确定源过滤器(SourceFilter)后,就从源过滤器(SourceFilter)的各个输出Pin开始,进行剩下的智能连接过程。这是一个“递归过程”,直到所有的分支都连接到一个RenderingFilter上为止。8.3智能连接构建FilterGraph在操作系统中,通过安装各种媒体软件和DirectShow开发包,就会存在了大量的实现特定功能的Filter,利用这些己有Filter,
7、可以开发各个功能的应用程序,提高了开发效率。利用FilterGraphManager组建FilterGraph时,寻找Filter是程序开发的关键。那DirectShow是如何寻找Filter?8.3智能连接构建FilterGraphDirectShow提供了两种枚举Filter的方法。一种是利用系统设备枚举器(SystemDeviceEnumerator),通过Filter的分类枚举各种过滤器。另一种方法是通过过滤器图,根据程序提供的搜索条件寻找合适的过滤器。搜寻到
此文档下载收益归作者所有