多媒体接口ppt课件.ppt_第1页
多媒体接口ppt课件.ppt_第2页
多媒体接口ppt课件.ppt_第3页
多媒体接口ppt课件.ppt_第4页
多媒体接口ppt课件.ppt_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三节多媒体接口 多媒体是Windows系统的基本特色 多媒体文件的类型很多 常见的有 音频文件wav mid wma mp3视频文件avi dat mpg1 mpg2 mpg4在Windows下 开发多媒体文件播放程序的方法很多 在VC 下 常见的有 MCI Windows多媒体编程接口 ActiveXControl 多媒体播放控件 DirectXSDK 媒体编程COM接口 本节先介绍MCI多媒体编程接口的使用 举例说明wav波形音频播放 再介绍DirectX的DirectShow使用 举例说明多种格式的影音文件播放 利用上述接口 可编写类似于WMPayer RealPlayer的专业播放器 MCI MediaControlInterfaec 多媒体控制接口 是一种软件接口 其特点为 为程序员提供了调用系统的多媒体设备播放影音的统一接口 系统的多媒体设备是指 Wave 波形音频 设备 MIDI 乐器数字接口 设备 CD 数字音频 设备 AVI 数字视频 设备等 上述设备的驱动程序中含有播放 暂停 播放状态查询等导出函数 MCI仅仅是一个高级命令接口 程序员只需使用MCI命令来打开上述设备 实施播放 暂停 移动播放位置等操作 关于MCI是如何调用驱动程序的导出函数的 程序员无需关心 使用层面高 MCI功能丰富 本节仅提供一个导引 详细技术请参考 VisualC 6 0多媒体开发指南 李博轩编著 清华大学出版社 一 MCI多媒体编程导引 1 常用MCI函数MCI提供了7个接口函数 其中最基本的有 MCIDEVICEIDmciGetDeviceID LPCTSTRlpszDevice 功能 由设备的名称或别名获得MCI设备的标识符 用于打开设备 参数 lpszDevice 字符串 设备的名称 标准设备名称如下表所示 MCIERRORmciSendCommand MCIDEVICEIDIDDevice MCI设备的标识符UINTuMsg 命令标识符 如MCI OPEN MCI PLAY等DWORDfdwCommand 辅助标志 说明如何使用下面的结构DWORDdwParam 指向一个结构 以说明如何执行或执行结果 功能 向指定的设备发送一个命令 共有34中命令 例如 MCI OPEN 打开一个MCI设备 此时 dwParam为指向一个MCI OPEN PARMS型结构的指针 fdwCommand的值说明了要使用dwParam结构中的那些成员 MCI PLAY 使用打开的设备播放 此时 dwParam为指向一个MCI PLAY PARMS型结构的指针 fdwCommand的值说明了要使用dwParam结构中的那些成员 MCI STOP 停止播放 此时 fdwCommand应为MCI WAIT dwParam应为NULL MCI COLSE 关闭设备 此时 fdwCommand dwParam均应为NULL MCIERRORmciSendString LPCTSTRlpszCommand 命令字符串LPTSTRlpszReturnString 返回执行结果字符串UINTcchReturn 返回执行结果字符串中的字符个数HANDLEhwndCallback 回调函数 功能 本命令是上一命令的另一版本 用近乎谈话的方式执行命令 例如 命令字符串为 openC my mp3typeMPEGVideoaliasNOWMUSIC 表示打开MPEG设备 加载C my mp3文件 并为其指定一个别名 命令字符串为 playNOWMUSIC 表示用刚才打开的设备播放加载的文件 本命令层面高 使用欠灵活 常用于VB等高级语言 2 MCI编程编程举例用MCI实现播放波形音频文件 Wav 1 建立对话框程序框架 工程名为MCI将 打开文件 钮的ID设为 ID Open 2 利用向导为 打开文件 钮建立点击消息响应函数voidCMCIDlg OnOpen TODO Addyourcontrolnotificationhandlercodehere 在MCIDlg h文件中添加 include mmsystem h classCMCIDlg publicCDialog Constructionpublic CMCIDlg CWnd pParent NULL standardconstructorcharPathName 200 存放打开的文件名与路径MCIDEVICEIDm nDeviceID MCIDEVICEIDm nElementID 4 在ProjectSetings中 按如下操作 在MCIDlg cpp文件的OnOpen 函数中添加 添加打开文件的对话框代码 voidCMCIDlg OnOpen TODO AddyourcontrolnotificationhandlercodehereCfile TRUE 打开文件 T WAV PathName 初始显示的文件名OFN HIDEREADONLY OFN EXPLORER T 波形音频文件 WAV WAV NULL if IDCANCEL return strcpy MC 待续 见下页 voidCMCIDlg OnOpen MCI OPEN PARMSOpen Open lpstrDeviceType char MCI DEVTYPE WAVEFORM AUDIO Open lpstrElementName MC MCIERRORe mciSendCommand NULL 设备ID 对于MCI OPEN 命令 应为NULLMCI OPEN 打开命令MCI OPEN ELEMENT Open结构中的文件名成员有效 LONG 待续 见下页 添加错误处理代码 voidCMCIDlg OnOpen if e 如果e不为0 则表示有错chartxt 200 BOOLs mciGetErrorString e 错误代码txt 返回错误字符串128 错误字符串最多能容纳的字符个数 MessageBox txt 错误 MB OK 显示错误字符串return 待续 见下页 添加播放的代码 voidCMCIDlg OnOpen MCI PLAY PARMSplay 本结构中包括开始和结尾位置e mciSendCommand Open wDeviceID 设备ID 由Open结构返回MCI PLAY 播放命令0 为0 表示忽略play结构的位置参数 从开头播放到结尾 DWORD LPVOID 播放完毕 先用MCI STOP命令停止播放 再用MCI CLOSE命令关闭设备 二 DirectShow多媒体编程导引 DirectX是Microsoft创建的多媒体编程接口 DirectX家族包括 DirectShow DirectSound DirectPlay Direct3D DirectInput等工具 其中DirectShow用于影音播放 特点为 为程序员提供了高性能的硬件实时访问接口 使硬件发挥最大的效能 但程序员一般不直接与硬件打交道 全面支持各种影音文件 设备 采用COM接口的形式 支持任何语言平台 但建议采用VC 平台 使用灵活 便利 如果希望开发高性能的多媒体影音播放软件 掌握DirectShow是必须的 DirectX功能强大 内容丰富 本节仅起导引作用 要想较全面地掌握DirectX 需要阅读有关技术资料 并进行大量的实际编程操作 参考文献 DirectXSDK技术文档 1 COM接口概要 COM即组件对象模型 是一种跨应用 跨语言的机器代码共享方法 虽然DLL也在机器代码级共享 但这种共享只能由程序来负责实现 而不是由DLL本身 COM定义的机器代码标准独立于任何编程语言 任何编程语言都能按照标准的要求 轻松地利用COM组件 COM以类 coclass 的形式存在 COM类中也有成员函数 或称为方法 但这些成员函数只能通过COM接口来调用 COM类提供了若干个面向用户的接口 其中必有一个名为IUnknown的接口 其他COM接口都派生于IUnknown 如图 在应用程序中使用COM接口首先要创建COM对象 并从这个对象获得接口实例 创建COM对象的API函数原型为 HRESULTCoCreateInstance REFCLSIDrclsid coclass的CLSIDLPUNKNOWNpUnkOuter COM对象的聚合DWORDdwClsContext 指定COM服务器的种类REFIIDriid 请求接口的IIDLPVOID ppv 接口指针的地址 若创建成功 则ppv为接口指针 可通过ppv来引用COM类中的成员函数 或进一步创建类中的其他COM接口 2 DirectShow简介 图中 各接口的主要功能为 IGraphBuilder接口用于呈递指定的媒体文件 IMediaControl接口用于对播放进行控制 如开始 停止 暂停等IMediaEvent接口用于播放事件管理 如等待播放完成等 后两个接口需由Iunknown接口来获得 3 用DirectShow播放影音文件编程 制作一个简易播放器 能播放MPG AVI Mp3 WAV WMA影音文件 首先 应安装DirectXSDK 此处安装的版本为DirectX8 0SDK 安装前 你的PC上应已安装了VC 6 0 安装后 将会在VC 工作环境中自动加入DirectX的库文件和包含文件路的路径 此时 从VC 的菜单 Tools Options 弹出的Options对话框中 选择Directories选项卡可以看到 编程步骤如下 1 建立对话框程序框架 界面如图 工程名为Dshow 将 打开文件 钮的ID设为 ID 2 在DShowDlg h文件中添加代码 includeclassCDShowDlg publicCDialog Constructionpublic CDShowDlg CWnd pParent NULL standardconstructorIGraphBuilder pGraph 定义指向IGraphBuilder接口的指针IMediaControl pMediaControl 定义指向IMediaControl接口的指针BOOLIsRun 定义判断是否播放的标志charPathName 200 定义字符数组 存放当前在播文件名 3 在工程中加入Strmiids lib和ole32 lib动态链接库 在对话框的初始化函数中 给有关变量赋初值BOOLCDShowDlg OnInitDialog TODO AddextrainitializationhereIsRun FALSE strcpy PathName 5 利用ClassWizard 为 打开文件 按钮建立点击事件的消息响应函数 并添加打开文件对话框的代码 voidCDShowDlg On TODO AddyourcontrolnotificationhandlercodehereCfile TRUE 打开文件 T MPG AVI Mp3 WAV WMA PathName 初始显示的文件名OFN HIDEREADONLY OFN EXPLORER T 多媒体文件 MPG AVI Mp3 WAV WMA MPG AVI Mp3 WAV WMA NULL if IDCANCEL return 点击取消strcpy PathName CComBSTR PathName 将文件名转换为BSTR型字符串未完 待后 添加建立COM类 播放文件的代码 voidCDShowDlg On OnStop 停止播放 此函数将在后面给出CoInitialize NULL 初始化COM类CoCreateInstance 创建COM接口实例CLSID FilterGraph COM类的ID 采用图像过滤器NULL 不采用聚合CLSCTX INPROC SERVER 在创建COM对象的程序中关联IID IGraphBuilder 接口名称 void 播放标志为 在播 6 利用ClassWizard 为 停止 按钮建立点击事件的消息响应函数 并添加代码 voidCDShowDlg OnStop TODO Addyourcontrolnotificationhandlercodehereif IsRun TRUE 判断是否正在播放pMediaControl Stop 停止播放pMedia

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论