基于DirectShow技术的媒体播放器

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:AAAA1234560
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:介绍了DirectShow技术的基本概念和Filter Graph及其组成,提出了一个基于DirectShow技术的媒体播放器的设计,并构建了过滤器图表,同时文中详细叙述了软件开发的实现框架。本文以VC 6.0和DirectShow技术开发媒体播放器,并给出了关键代码的示例。
  关键词:DirecShow;Filter;Filter Graph;媒体播放器
  中图分类号:TP37文献标识码:A文章编号:1009-3044(2008)18-2pppp-0c
  
  Media Player Based on DirectShow Technology
  QIN Xiao-mei, ZHANG Yi-bo
  (Henan Economy and Trade Vocational College,Zhenzhou 450053,China)
  Abstract: This thesis mainly introduces the basic concept of DirectShow technology, and Filter Graph with its composition, the thesis suggests a media player based on DirectShow technology one, and designs filter graph. The realization frame of software development is discussed at the same time detailedly in the main body of this thesis. VC 6.0 and DirectShow technology is used in the course of programming. the key code of the program is also available.
  Key words:DirecShow;Filter;Filter Graph;Media Player
  
  1 引言
  
  DirectX软件开发包是微软公司提供的一套在Windows平台上开发高性能图形、声音、输入输出和网络游戏的编程接口,DirectShow是DirectX家族的成员之一,DirectShow可以实现高质量的音视频采集、编辑、编码、解码和播放。DirectShow是基于COM 的,它为程序人员从Windows平台上音视频信息的网络传输、硬件差异、同步性中解脱出来,软件开发者只要按照DirectShow COM接口来编写程序,不用关心硬件设备、不同媒体格式的差别、编解码的实现细节等,极大地降低了多媒体应用程序开发的复杂度,目前DirectShow在多媒体应用中发挥着重要作用。
  
  2 DirectShow概述
  
  DirectShow是一个开放的应用框架,是一套基于COM的编程接口。图 1是DirectShow的系统功能。图中最大的一块就是DireceShow系统,它的基本工作原理就是流水线:将Filter串联在一起,交由Filter Graph Manager统一管理。系统的输入为文件、硬件板块、网络数据等,系统的输出为声卡、显卡、本地文件系统、网络。
  
  图2 AVI文件播放流程
  从图 2看,每一个Filter 都和其他的一个或者两个Filter 相连接,连接点也是COM对象,称为Pin。Filter通过Pin将数据从一个Filter传递到另一个Filter,从而可以使数据在Filter的链表中流动。
  3.2 Filter Graph Manager
  Filter Graph Manager是一个COM对象,用来控制Filter Graph中的所有的Filter,主要有以下的功能:
  (1)用来协调Filter之间的状态改变,从而使Graph中的所有的Filter的状态的改变应该一致。Graph中的Filter的状态改变应该一致,应用程序并不将状态改变的命令直接发给Filter,而是将相应的状态改变的命令发送给Filter Graph Manager,由manager将命令分发给Graph中每一个Filter。
  (2)建立一个参考时钟。Graph中的Filter都采用同一个时钟,称为参考时钟(reference clock),参考时钟可以确保所有的数据流同步。Filter Graph Manager应该选择一个参考时钟,可以选择声卡上的时钟,也可以选择系统时钟。
  (3)将Filter的消息返回给应用程序。Graph管理器采用事件机制将Graph中发生的事件通知给应用程序,这个机制类似于windows消息循环机制。
  (4)提供方法建立Filter Graph。Graph管理器给应用程序提供了将Filter添加进Graph的方法,连接Filter的方法,断开Filter连接的方法。
  3.3 媒体类型
  DirectShow需要一种方式来描述Filter Graph每一个点的数据格式,例如,我们还以播放AVI文件为例,数据以RIFF块的形式进入Graph中,然后被分割成视频和音频流,视频流有一系列的压缩的视频帧组成,解压后视频流由一系列的无压缩的位图组成,音频流也要走同样的步骤。
  3.4 硬件在Graph中的作用
  为了提高系统的稳定性,Windows操作系统对硬件操作进行了隔离。DirectShow包装Filter,这种Filter能工作在用户模式下,外观、控制方法跟普通Filter 一样,而包装Filter内部完成与硬件驱动程序的交互。使得编写DirectShow应用程序从支持硬件而做出的特殊处理中解脱出来。
  
  4 基于DirectShow技术的媒体播放器
  
  4.1 配置开发环境
  本媒体播放器(MyPlayer)使用VC 6.0开发,采用DirectX SDK9.0编程接口。DirectX SDK安装在C:\ DX90SDK目录下。软件开发之前必须先完成以下准备工作。
  (1)编译基类源代码,用VC打开C:\DX90SDK\Samples\C \DirectShow
  BaseClasses\baseclass.dsw,编译生成两个静态库文件:Debug版本生成strmbasd.lib,Release版本生成strmbase.lib。
  (2)配置VC的编译环境:Include目录和Lib目录分别添加以下内容:
  C:\DX90SDK\INCLUDE
  C:\DX90SDK\SAMPLES\C \DIRECTSHOW\BASECLASSES
  C:\DX90SDK\SAMPLES\C \COMMON
  C:\DX90SDK\LIB
  C:\DX90SDK\SAMPLES\C \DIRECTSHOW\BASECLASSES\Debug
  C:\DX90SDK\SAMPLES\C \DIRECTSHOW\BASECLASSES\Release
  (3)配置DirectShow应用程序开发项目需要连接的库文件。执行VC的菜单命令Project|Setttings,在弹出的对话框中单击Link标签,在Object/library modules文本框中,Debug版本输入strmbasd.lib Winmm.lib,Release版本输入strmbase.lib Winmm.lib。
  4.2 功能设计
  主要功能包括:播放、暂停、停止、快放、慢放、全屏播放。MyPlayer是在C:\DX90SDK\Samples\C \DirectShow\Player\PlayWnd基础上修改完成的。程序界面如图 3。
  
  图3 程序界面
  MyPlayer是一个标准的Win32应用程序。程序入口函数为WinMain,总的执行流程如下:CoInitializeEx|创建主窗口|发送消息弹出一个对话框以选择要播放的媒体文件|主线程的消息循环|CoUninitialize。主线程的消息循环中完成:播放、暂停、停止、全屏、快放、慢放等。
  (1)播放功能实现方法为:选择媒体文件、初始化程序窗口、初始化视频播放窗口、调用HRESULT PlayMovieInWindow(LPTSTR szFile)函数完成播放。PlayMovieInWindow函数主要实现代码和功能如下:
  1)创建一个Filter Graph组件CoCreateInstance(CLSID_FilterGraph, NULL, CLSCTX_INPROC_SERVER, IID_IGraphBuilder, (void **)
其他文献
摘要:随着一些高等院校的合并,教学管理信息系统存中在着异构数据库集成的问题;异构数据库集成技术是目前解决多个不同数据库集成的通用方法,包括数据转换程序、中间件技术和多数据库系统三种。本文在异构数据库的基本概念的基础上,给出了教学管理综合数据库的异构方案,并讨论了对其实施集成时需要考虑的若干问题。  关键词:异构数据库集成;中间件;多数据库系统;数据转换  中图分类号:TP311文献标识码:A文章编
摘要:本文阐述的是基于JSP的网络购物中心的设计和开发过程。本文首先说明系统中应用的JSP、Tomcat、SQL等各项技术,并阐述了网络购物中心的设计理念。接着,给出了网络购物中心的设计方案,说明系统如何实现购物车管理,订单管理等前台功能以及商品管理,用户信息管理等后台功能。  关键词:JSP;网络购物中心;数据库  中图法分类号:TP311文献标识码:A文章编号:1009-3044(2008)0
摘要:由于UML很好地实现了用户、开发人员、设计人员及管理人员之间的信息传递,提高了相互间的协作能力,使软件开发的工程化程度大大提高。基于UML对软件进行分析和建模,很好地体现了这一点。  关键词:UML;面向对象建模;图书管理系统;高校教材管理系统;学籍管理系统  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)18-20000-00    Object-orien
我国传统礼仪文化源自商周时期,在朝代更替的过程中有着不同程度的创新与发展,在现代更是以系统化理论为表征,影响着人们的价值观念和道德行为准则。中华上下五千年的传统礼仪,不仅是人与人之间交往的准则,也是一个国家繁荣与稳定的基石。“不学礼,无以立”“国家无礼不宁”,体现出我国传统礼仪文化与国家富强具有一体性的特点。同时,传统礼仪在指导人们的思想行为方面具有重要意义,能帮助人们提升综合修养,强少年之志,具
摘要:Portal(门户)是企业目前最主要的网络构架形式,随着企业信息化建设的深入发展,portal技术得到广泛应用。本文从企业门户(Enterprise Portal)概念入手,在分析飞行试验院实际业务需求的基础上,从园区网功能设计、利用企业门户思想进行系统整合两个方面,介绍企业门户技术在园区网建设中的应用。该文重点阐述如何用门户技术实现飞行试验各个系统的整合。  关键词:门户;信息整合技术(E
语文教育家叶圣陶先生指出:“读整本的书,不仅可以练习精读、速读,有利于养成好的读书习惯,还可以进行各种文学知识与文体阅读的训练,学生阅读的心理会更加专一,阅读效果也会更好,它可以收‘一石多鸟’之效。”《义务教育语文课程标准(2011年版)》也强调要重视培养学生广泛的阅读兴趣,扩大阅读面,增加阅读量,提高阅读品位;提倡少做题,多读书,好读书,读好书,读整本的书。整本书承载着丰富的文化信息,学生在阅读
摘要:为了解决高温监测系统在原DOS系统中不能实现多线程所造成的监测系统容量小、系统运行不稳定、CPU运行效率低、应用及修改程序不灵活等问题。基于高温监测系统V1.0的需求,从完善高温监测系统功能的角度出发,分析现今Linux的发展必然是嵌入式系统这一趋势。采用功能完善且一开始就针对实时系统,在设计之初就考虑了小巧、高性能和高效率的MiniGUI图形用户界面,提出在Linux上运用MiniGUI实
整体上看,张国平的山水画所表现的景观客体是属于南方的,其传递的信息主要是南方山水“秀”和“润”的绿色生态本质特征,而非北方山水的苍凉、苍莽。  在四川的画坛上,能油画、国画左右开弓者为数不多,但张国平是其中之一,而且得心应手,颇有建树和影响。  张国平从事油画学习、创作达半个世纪,探索之深、发力之勤、用心之苦、创作之丰,这些使其艺术简历赫奕,如中国美术家协会理事,四川省美术家协会副主席,成都文理学
作者简介  作词: 熊平  成都市政府研究室副主任,西南财大经济学博士,电子科技大学管理学博士后,副教授。爱好文学,诗歌。作品散在國际在线,四川日报副刊,四川文艺在线,今日头条,喜马拉雅平台等。  作曲/演唱:陈万  四川音乐学院教授,硕士生导师,四川省学术与技术带头人后备人选,四川省青联委员,中国音乐家协会会员,中国文艺志愿者协会首批会员,四川省音乐家协会理事,四川省文艺评论家协会理事。  演唱
摘要:随着计算机网络技术的迅速发展和日益普及,C/S系统已得到广泛应用。为便于开发C/S结构数据库系统,研究了C/S结构数据库系统的基本构造原理,简要介绍了基于Visual FoxPro 6.0开发C/S结构数据库系统的方法。实践表明,该方法正确有效。  关键词:C/S结构;ODBC;SQL Server;远程视图;连接  中图分类号:TP311.132 文献标识码:A 文章编号:1009-304