软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术

上传人:E**** 文档编号:89331723 上传时间:2019-05-23 格式:PPT 页数:86 大小:1.39MB
返回 下载 相关 举报
软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术_第1页
第1页 / 共86页
软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术_第2页
第2页 / 共86页
软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术_第3页
第3页 / 共86页
软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术_第4页
第4页 / 共86页
软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术_第5页
第5页 / 共86页
点击查看更多>>
资源描述

《软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术》由会员分享,可在线阅读,更多相关《软件开发技术基础 第2版 教学课件 ppt 作者 赵英良 第6章 多媒体编程技术(86页珍藏版)》请在金锄头文库上搜索。

1、第6章 多媒体编程技术,西安交通大学 计算机教学实验中心 http:/,软件开发技术基础,本章内容,多媒体编程基础 音频的播放与处理 图像处理 动态图像,2,6.1多媒体编程基础,媒体控制接口MCI Activex技术简介 DirectX技术简介,3,6.1.1 媒体控制接口MCI,MCI(Media Control Interface,媒体控制接口)是Windows提供的与设备无关的多媒体高层次命令接口,可以控制CD声音、视频动画、Wave格式数字声音、MIDI音序器、录像机和激光视盘机等多种设备。,4,5,MCI设备类型,6,Windows提供的MCI设备驱动程序,7,6.1.2 Acti

2、vex技术简介,ActiveX是微软提出的一种可以使不同语言开发的软件构件在网络环境中相互操作的标准。ActiveX包括 控件(Controls)、文档(Documents)、脚本(Scripts)三种最常用的技术, 同时它也包括客户机技术、服务器技术以及工具和应用程序,8,6.1.3 DirectX技术简介,DirectX是Microsoft公司最早为Windows 95平台所提供的一套支持多媒体运行的程序库与应用程序接口的总称,其特点是直接对HAL (硬件抽象层)操作,实现视频、声音的输出,网络通信及对游戏杆的控制。与传统的Windows上的GDI或MCI相比,它加快了速度,提高了便利性。

3、,9,6.2 音频的播放与处理,MCI提供控制音频的方法 MCI由Windows提供的mmsystem.h文件定义。 Windows采用两种MCI接口与MCI设备通信: 一是使用命令消息接口函数,直接控制MCI设备; 二是使用命令字符串接口函数,基于文本接口或命令脚本来控制MCI设备。 不同之处在于它们的基本命令结构以及将消息发送到设备的原理不同。,10,6.2.1 命令消息接口,命令消息接口使用消息控制MCI设备 Windows多媒体扩充软件为使用命令消息接口发送MCI命令提供3个函数: MciSendCommand:发送一个命令消息到一个MCI设备; MciGetDeviceID:当设备打

4、开时,返回这个设备的ID号; MciGetErrorString:返回错误代码的字符串。,11,1发送命令消息,MciSendCommand的语法如下: MCIERROR mciSendCommand(MCIDEVICEID IDDevice, UINT uMsg, DWORD fdwCommand, DWORD dwParam);,12,2MCI命令消息的分类,MCI命令消息可以划分为以下几类:直接由MCI解释的命令、由所有的MCI设备所支持的命令、基本命令和扩展命令。 所有的MCI设备支持的命令消息:,13,基本命令,14,3MCI设备的打开,使用MCI设备前,必须使用MCI_OPEN命令

5、消息来初始化设备。MCI_OPEN 命令对应的参数结构为: typedef struct DWORD_PTR dwCallback; /低字节为MCI_NOTIFY标志存放了指定的窗口句柄 MCIDEVICEID wDeviceID; /返回给调用程序的ID号 LPCSTR lpstrDeviceType; /要打开的设备名 LPCSTR lpstrElementName; /附加的设备元素名 LPCSTR lpstrAlias; /可选的设备别名 MCI_OPEN_PARMS;,15,(1)用MCI设备驱动程序名指定待打开的MCI设备,用设备驱动程序名打开一个波形音频设备: WORD Dev

6、iceID; /声明设备号变量 MCI_OPEN_PARMS MciOpenParms; /声明打开参数的结构体变量 MciOpenParms.IpstrDeviceType=”mciwave.drv”;/指定设备 if(MciSendCommand(0,MCI_OPEN, MCI_OPEN_TYPE, (DWORD)(LPVOID)& MciOpenParms) /打开设备失败 else /打开设备成功 DeviceID=MciOpenParms.wDeviceID ,16,(2)用设备类型常数指定待打开的MCI设备,Windows MCI接口为每种类型的MCI设备定义了一个设备类型常数,应

7、用程序可以使用此常数指定待打开的设备。 可以在MCI_OPEN_PARMS的LpstrDeviceType域中指定此常数,并用设备MCI_OPEN_TYPE和MCI_OPEN_TYPE_ID指定待打开的设备,此时LpstrDeviceType为一个DWORD域,其低字节部分用来指定设备常数,高字节是 的顺序索引号.,17,设备类型及常数,18,4常用命令消息,(1)MCI_PLAY命令消息 MCI_PLAY命令消息通知设备开始传送输出数据。MCI_PLAY命令的对应参数结构为: typedef struct DWORD_PTR dwCallback; /低字节存放MCI_NOTIFY使用的窗口

8、句柄 DWORD dwFrom; /开始播放的位置 DWORD dwTo; /播放结束的位置 MCI_PLAY_PARMS; MCI_PLAY常用的标志有:MCI_FROM,MCI_TO,MCI_DGV_PLAY_REPEAT等,19,(2)MCI_SET命令消息,MCI_SET设置设备信息。MCI_SET命令的对应参数结构为 typedef struct DWORD_PTR dwCallback; / /低字节存放MCI_NOTIFY使用的窗口句柄 DWORD dwTimeFormat; /设备的时间格式 DWORD dwAudio; /音频输出通道 MCI_SET_PARMS; MCI_S

9、ET常用的标志有: MCI_SET_AUDIO,表示音频通道号包含在参数结构中; MCI_SET_TIME_FORMAT,时间格式参数包含在参数结构中;,20,5关闭一个设备,MCI_CLOSE命令消息取消对一个设备或者设备元素的访问,它类似于一个文件的关闭操作。当所有使用一个设备的任务均关闭了这个设备时,MCI释放这个设备。 MCI_CLOSE的参数结构 typedef struct DWORD_PTR dwCallback; /低字节存放MCI_NOTIFY使用的窗口句柄 MCI_GENERIC_PARMS;,21,播放声音文件,【例6-1】 使用命令消息接口函数播放特定WAV声音文件“e

10、:01.wav”。 解题思路: 包含头文件 和; 加载多媒体编程库文件#pragma comment(lib, “winmm“); 声明打开设备消息参数结构体变量; 填充参数; 使用mciSendCommand和MCI_OPEN命令消息打开设备; 声明播放设备消息参数结构体变量; 使用mciSendCommand和MCI_PLAY命令消息播放设备; 进入循环等待播放。,22,思考题,(1)如何使程序可以播放任意从键盘输出的文件? (2)查找资料,考虑如何控制播放过程的暂停、继续和从头播放?,23,6.2.2 命令字符串接口,命令字符串接口使用文本命令控制MCI设备。文本串中包含执行一个命令所需

11、的所有信息。 基于字符串的命令,把控制命令连接在一起,然后通过mciSendString函数提交给MCI。Windows多媒体扩充软件为使用命令字符串接口传送命令字符串提供了3个函数: mciSendString、mciGetErrorString、mciExecute。,24,1mciExecute,mciExcute函数是mciSendString的简化形式 语法定义如下: BOOL mciExecute (Lpstr Command) LpstrCommand是一个指向以NULL结束的控制命令的字符串,字符格式与mciSendString相同。若函数调用功能,返回TRUE,否则返回FAL

12、SE。,25,2mciGetErrorString函数,mciGetErrorString函数返回一个MCI错误代码的文本描述字符串,其语法如下: WORD mciGetErrorString (DWORD Error, Lpstr Buffer, WORD Length) 3mciSendString函数 命令字符串接口函数mciSendString的原形如下: MCIERROR mciSendString(LPCTSTR lpszCommand, LPTSTR lpszReturnString, UINT cchReturn, HANDLE hwndCallback),26,使用命令字符串

13、播放声音文件,【例6-2】 使用命令字符串接口函数播放E盘上的“01.mp3”文件。 解题思路: 包含头文件 和; 加载多媒体编程库文件#pragma comment(lib, “winmm“); 使用mciSendString函数和play命令字符串播放文件; 进入循环等待播放。,27,提示与思考,(1)mciSendString函数的后三个参数通常可以设置为NUll、0和NULL。 (2)暂停播放的命令字符串可写为:pause e:01.mp3,继续播放的命令字符串可写为:resume e:01.mp3,停止播放的命令字符串可写为:stop e:01.mp3。请扩充该程序的功能。,28,6

14、.2.3 Wave文件结构,声音的处理最终是对声音数据的处理。 声音数据以某种格式存放在计算机存储器中。 RIFF(Resource Interchange File Format资源互换文件格式)是Microsoft公司定义的一种用于管理Windows环境中多媒体数据的文件格式。波形音频Wave、MDI和数字视频Avi文件都采用这种格式存储。,29,RIFF文件结构,RIFF文件基本构成是称为“块”(Chunk)的单元, 每个块由“ID”、“数据大小”及“数据”3部分所组成 ID为4个字符所组成的代码, 如“RIFF“,“LIST“等,指定块的标志ID; 数据大小用来指定块的数据域大小,占用

15、4个字节; 数据用来描述具体的声音信号,它可以由若干个子块构成, 一般情况下,块与块是平行的,不能相互嵌套,30,WAVE文件的格式类型为“WAVE”。RIFF块包含两个子块: 这两个子块的ID分别是“fmt”和“data”,其中fmt子块由结构WAVEFORMATEX所组成,其子块的大小就是sizeof(WAVEFORMATEX),数据组成就是WAVEFORMATEX结构中的数据,31,WAVE文件结构,32,LIST块(4) LIST 数据块大小(4) LIST数据,WAVE文件结构实例,RIFF 0x00013bd0-80848 Fmt 0x00000010-16 Data 0x0001

16、3b7c-80764 LIST 0x00000028-40 4*7=28 8 80856,33,34,6.2.4 音效处理,读出wave文件,处理后存为新的文件 1文件打开函数mmioOpen,原型为: HMMIO mmioOpen( LPSTR szFilename, LPMMIOINFO lpmmioinfo, DWORD dwOpenFlags); 2读文件函数mmioRead,原型为: LONG mmioRead( HMMIO hmmio, HPSTR pch, LONG cch );,35,3文件定位函数mmioSeek,该函数改变当前文件的指针,原型为: LONG mmioSeek( HMMIO

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号