第3章多媒体音频播放器优秀PPT.ppt
《第3章多媒体音频播放器优秀PPT.ppt》由会员分享,可在线阅读,更多相关《第3章多媒体音频播放器优秀PPT.ppt(42页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章多媒体音频播放器章多媒体音频播放器现在学习的是第1页,共42页第第3 3章章 多媒体音频播放器多媒体音频播放器学习目标:学习目标:几种重要的音频格式几种重要的音频格式媒体控制接口类媒体控制接口类MCI命令命令媒体控制接口类媒体控制接口类MCI设备设备mciSendString和和mciSendCommand函数的使函数的使用用现在学习的是第2页,共42页3.13.1几种重要的音频格式几种重要的音频格式3.1.13.1.1波形音频波形音频波音音频是一种电子数字化的声音,是计算机播波音音频是一种电子数字化的声音,是计算机播放音频的一种重要格式,它存储的是声音的波形放音频的一种重要格式,
2、它存储的是声音的波形信息,当播放波形音频时,不管播放文件的设备信息,当播放波形音频时,不管播放文件的设备是何种类型,都会得到相似的声音,波形音频文是何种类型,都会得到相似的声音,波形音频文件通常件通常wav作为文件扩展名。由于采用波形音频作为文件扩展名。由于采用波形音频存储电子化声音需要大量的存储空间,因此它一存储电子化声音需要大量的存储空间,因此它一般只用于短时间的声音播放。般只用于短时间的声音播放。波形音频主要有以下几个属性,他们决定了声音波形音频主要有以下几个属性,他们决定了声音的质量。的质量。(1)采样平率)采样平率 (2)量化位数)量化位数 (3)声道数)声道数现在学习的是第3页,共
3、42页3.13.1几种重要的音频格式几种重要的音频格式3.1.2 MIDI3.1.2 MIDI音频音频MIDI(Musical Instrument Digital Interface)在多媒体音)在多媒体音频中占有重要的位置,是播放和录制音乐的国际标准。它确定了频中占有重要的位置,是播放和录制音乐的国际标准。它确定了连接音乐设备的电缆线、硬件和通信协议。多媒体连接音乐设备的电缆线、硬件和通信协议。多媒体PC只需要具有只需要具有MIDI接口和接口和MIDI合成器就可具备处理合成器就可具备处理MIDI的功能。的功能。MIDI在处理音乐时是将在处理音乐时是将MIDI音乐设备上产生的活动编码记录下音
4、乐设备上产生的活动编码记录下来,将这些数据传递到来,将这些数据传递到MIDI合成器上就能重现原来的演奏。合成器上就能重现原来的演奏。MIDI的消息有两种类型:状态字节和数字字节;状态字节的消息有两种类型:状态字节和数字字节;状态字节u发送发送的类别(动作和函数);数字字节总是跟在状态字节后,表示发送的类别(动作和函数);数字字节总是跟在状态字节后,表示发送消息的实际值。数字字节的个数取决与状态字节表示的消息类型。消息的实际值。数字字节的个数取决与状态字节表示的消息类型。MIDI通过通道字节最高位区别这两种类型。最高位为通过通道字节最高位区别这两种类型。最高位为1,表示状,表示状态字节,为态字节
5、,为0表示数字字节。表示数字字节。所有所有MIDI消息通过通道来接收和发送。通道上能够传递不同消息通过通道来接收和发送。通道上能够传递不同乐器的声音。音序器根据通道传递的消息,让不同的乐器演乐器的声音。音序器根据通道传递的消息,让不同的乐器演奏不同声部。使用通道,使奏不同声部。使用通道,使MIDI的音乐效果大大增强。但是的音乐效果大大增强。但是如果不对声道和相应乐器作统一规定的话将会造成混乱。如果不对声道和相应乐器作统一规定的话将会造成混乱。Windows使用通用的使用通用的MIDI标准定义通道的分配。标准定义通道的分配。现在学习的是第4页,共42页3.13.1几种重要的音频格式几种重要的音频
6、格式3.1.3 CD3.1.3 CD音频音频CD音频采用红皮书标准,通过音频采用红皮书标准,通过CD-ROM驱动器来驱动器来播放播放CD音频。音频。CD音频需要的存储量大,一张光音频需要的存储量大,一张光盘约能存储盘约能存储70分钟左右的分钟左右的CD音频。音频。国际标准化组织对光盘的数据格式作了详细的规国际标准化组织对光盘的数据格式作了详细的规定。红皮书是定。红皮书是CD标准的第一个文本,发表于标准的第一个文本,发表于1981年,描述了年,描述了CD-DA的信息和编码格式。其的信息和编码格式。其采样率为采样率为44.1kHz,每个样本量化位数为,每个样本量化位数为16位。位。一般情况下,整个
7、光盘都用来存储一般情况下,整个光盘都用来存储CD音频数据,音频数据,并划分为多个音轨,轨道的具体长度可以不定,并划分为多个音轨,轨道的具体长度可以不定,通常一个音轨对应一首曲目。通常一个音轨对应一首曲目。CD音频的长度用分、音频的长度用分、秒、帧的形式来衡量,最小的单位是帧,每一帧秒、帧的形式来衡量,最小的单位是帧,每一帧为为1/75秒。秒。现在学习的是第5页,共42页3.23.2媒体控制接口类媒体控制接口类MCIMCIMCI提供了标准的播放多媒体设备和记录多媒体提供了标准的播放多媒体设备和记录多媒体文件的命令,这些命令使得我们的应用程序可以文件的命令,这些命令使得我们的应用程序可以与设备无关
8、的方式控制音频和视频设备。对所有与设备无关的方式控制音频和视频设备。对所有支持的媒体类型(音频、支持的媒体类型(音频、MIDI、CD音频、数字音频、数字视频等)而言,这些命令的接口都是类似的。视频等)而言,这些命令的接口都是类似的。现在学习的是第6页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令MCI支持命令字符串和命令消息两种方式控制支持命令字符串和命令消息两种方式控制MCI设别,我们可以在设别,我们可以在MCI应用程序中使用其中应用程序中使用其中的任何一种或混合使用这两种方式。的任何一种或混合使用这两种方式。命令消息接口包含常
9、数和结构信息。使用全局函命令消息接口包含常数和结构信息。使用全局函数数mciSendCommand向某个向某个MCI设备发送消息。设备发送消息。命令字符串接口则提供命令消息的文本版本,它命令字符串接口则提供命令消息的文本版本,它是比命令消息接口要高级的是比命令消息接口要高级的MCI接口。使用命令接口。使用命令字符串接口时,必须使用全局函数字符串接口时,必须使用全局函数mciSendString向某个向某个MCI设备发送字符串。设备发送字符串。Microsoft Windows操作系统在向指定的操作系统在向指定的MCI设设备发送该字符串时将其解释成相应的命令消息。备发送该字符串时将其解释成相应的
10、命令消息。现在学习的是第7页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令命令消息方式使用结构检索信息,这些结构包含命令消息方式使用结构检索信息,这些结构包含了不同设备的不同信息。而命令字符串方式则将了不同设备的不同信息。而命令字符串方式则将检索到的信息打包到一个字符串中,读者使用检索到的信息打包到一个字符串中,读者使用MCI命令字符串方式翻译该字符串。命令字符串方式翻译该字符串。在一般不需要检查在一般不需要检查MCI命令返回值时,我们推荐命令返回值时,我们推荐读者使用读者使用MCI命令字符串方式操作命令字符串方式操作MCI设备设
11、备它更易于理解和记忆,在本实例中,我们将使用它更易于理解和记忆,在本实例中,我们将使用命令消息方式而不是命令字符串方式。命令消息方式而不是命令字符串方式。现在学习的是第8页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令1.全局函数全局函数mciSendCommandmciSendCommand负责向指定的负责向指定的MCI设备发送设备发送一个命令消息,其函数原型为:一个命令消息,其函数原型为:MCIERROR mciSendCommand(MCIDEVICEID IDDevice,UINT uMsg,DWORD fdwComman
12、d,DWORD dwParam);其中的参数其中的参数IDDevice表示接收该消息的表示接收该消息的MCI设备设备类型。类型。MCI_OPEN命令消息不实用此参数,参数命令消息不实用此参数,参数uMsg为相应的命令消息,参数为相应的命令消息,参数fdwCommand为为命令消息的标志,参数命令消息的标志,参数dwParam则为命令消息则为命令消息包含参数的结构地址。包含参数的结构地址。现在学习的是第9页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令如果如果mciSendCommand成功发送命令消息,函成功发送命令消息,函数返回
13、数返回0,否则返回相应的,否则返回相应的MCI错误码。需要注意错误码。需要注意的是,错误码包含在返回的的是,错误码包含在返回的DWORD(双字)类(双字)类型值的低地址字中。如果该错误与特定的设备有型值的低地址字中。如果该错误与特定的设备有关,则高地址字为发生错误的驱动器标识,否则关,则高地址字为发生错误的驱动器标识,否则高地址字为高地址字为0。有关。有关MCI错误的信息,请参阅错误的信息,请参阅MCI错误类型一节。错误类型一节。现在学习的是第10页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令如果要检索如果要检索mciSendC
14、ommand返回值的文本描返回值的文本描述,可以使用全局函数述,可以使用全局函数mciGetErrorString.MCI命令消息的语法包含三个元素:常数消息值、命令消息的语法包含三个元素:常数消息值、包含命令参数的结构和确定命令选项和参数有效包含命令参数的结构和确定命令选项和参数有效字段的标志集合。例如,下面的代码向指定的字段的标志集合。例如,下面的代码向指定的MCI设备发送一个设备发送一个MCI_PLAY命令:命令:mciSendCommand(wDeviceID,/设备标识设备标识MCI_PLAY,/命令消息命令消息0,/标志标志(DWORD)(LPVOID)&mciPlayParms)
15、;/参数块参数块现在学习的是第11页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令最后一个参数最后一个参数mciPlayParms为为MCI_PLAY_PARMS类型的结构地址,其中可能类型的结构地址,其中可能包含了回放的开始和结束位置。大多数包含了回放的开始和结束位置。大多数MCI命令命令消息都使用类似的结构包含足够的消息都使用类似的结构包含足够的MCI操作信息。操作信息。所有这些结构的第一个参数都是所有这些结构的第一个参数都是MCI操作完成后操作完成后接收接收MM_MCINOTIFY通知消息的窗口句柄。通知消息的窗口句柄。现在
16、学习的是第12页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令2.全局函数全局函数mciSendString全局函数全局函数mciSendString负责向负责向MCI设备发送一设备发送一个命令字符串。接收命令的设备由字符串的内容个命令字符串。接收命令的设备由字符串的内容指定。指定。MCIERROR mciSendString(LPCTSTR lpszCommand,LPTSTR lpszReturnString,UINT cchReturn,HANDLE hwndCallback);现在学习的是第13页,共42页3.23.2媒体
17、控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令其中的参数其中的参数lpszCommand表示表示MCI命令字符串命令字符串(以(以“0”结束)的地址,参数结束)的地址,参数lpszReturnString则为返回字符串的缓冲区地址,则为返回字符串的缓冲区地址,参数参数cchReturn为参数为参数lpszReturnString指定的指定的字符缓冲区大小,如果命令字符串指定了通知字符缓冲区大小,如果命令字符串指定了通知(“notify”)标志,则参数)标志,则参数hwndCallback则则为回调窗口的句柄。为回调窗口的句柄。mciSendString的返
18、回值与的返回值与mciSendCommand相同。相同。现在学习的是第14页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令MCI命令字符串的语法为典型的命令字符串的语法为典型的“动词动词对象对象修饰符修饰符”结构。每个命令字符串都包括一个结构。每个命令字符串都包括一个命令、一个设备标识符和命令参数。其中的参数命令、一个设备标识符和命令参数。其中的参数对部分命令可选的,而对于部分命令是必须的。对部分命令可选的,而对于部分命令是必须的。一般地,一个命令字符串的形式为:一般地,一个命令字符串的形式为:command device_id
19、arguments其中,其中,command指定了指定了MCI命令,例如命令,例如open、colse或或play等;等;device_id标识了标识了MCI驱动器的驱动器的一个实例(一个实例(device_id在打开设备时创建);在打开设备时创建);arguments指定了命令所使用的标志和变量。这指定了命令所使用的标志和变量。这里的标志为里的标志为MCI命令可识别的关键字,变量为命令可识别的关键字,变量为MCI命令或标志使用的数字或字符串。例如,希命令或标志使用的数字或字符串。例如,希望从指定的位置播放到指定的位置,可以使用下望从指定的位置播放到指定的位置,可以使用下面的代码实现:面的代码
20、实现:现在学习的是第15页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令DWORD PlayFromTo(LPSTR lpstrAlias,DWORD dwFrom,DWORD dwTo)/形成命令串形成命令串 Char achCommandBuff128;/发送命令串发送命令串 Waprintf(achCommandBuff,“paly%s from%u to%u”,lpstrAlias,dwFrom,dwTo);Return mciSendString(achCommandBuff,NULL,0,NULL);这里的这里的“fr
21、om”和和“to”是可识别的预定义标志。是可识别的预定义标志。现在学习的是第16页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令3.MCI命令的分类命令的分类MCI定义了四种类型的命令:定义了四种类型的命令:(1)系统命令:)系统命令:(2)必需命令)必需命令 (3)基本命令)基本命令 (4)扩展命令)扩展命令 系统命令和必需命令为所有系统命令和必需命令为所有MCI设备都必须支持设备都必须支持的最小命令集,而基本命令和扩展命令并不为所的最小命令集,而基本命令和扩展命令并不为所有的有的MCI设备支持。如果应用程序需要使用基本设备支持
22、。如果应用程序需要使用基本命令和扩展命令,则应该在使用该命令之前查询命令和扩展命令,则应该在使用该命令之前查询该设备是否支持它(使用查询命令该设备是否支持它(使用查询命令MCI_GETDEVCAPS)。)。MCI命令见教材表命令见教材表3-2所示。所示。现在学习的是第17页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令4.MCI函数、宏和消息函数、宏和消息大多数大多数MCI应用程序需要重复使用全局函数应用程序需要重复使用全局函数mciSendString和和mciSendCommand。除了这。除了这两个函数之外,两个函数之外,M
23、CI还提供了其他几个不太常用还提供了其他几个不太常用的全局函数。的全局函数。全局函数全局函数mciGetErrorString的意义前文已经述的意义前文已经述及。此外,全局函数及。此外,全局函数mciGetCreatorTask允许应允许应用程序使用设备标识符检索创建该标识符的任务用程序使用设备标识符检索创建该标识符的任务句柄。全局函数句柄。全局函数mciGetYieldProc与与mciSetYieldProc可以指定或检索与可以指定或检索与“wait”(MCI_WAIT)标志相关的回调函数地)标志相关的回调函数地址。址。现在学习的是第18页,共42页3.23.2媒体控制接口类媒体控制接口类
24、MCI MCI 3.2.1 MCI3.2.1 MCI命令命令大多数大多数MCI命令需要的设备标识符都由调用命令需要的设备标识符都由调用MCI_OPEN命令而得到。但在部分情况下,可能命令而得到。但在部分情况下,可能不希望打开该设备而获取设备标识符,此时可以不希望打开该设备而获取设备标识符,此时可以使用全局函数使用全局函数mciGetDeviceID。不同的媒体可能使用不同的时间格式,这些时间不同的媒体可能使用不同的时间格式,这些时间格式包括格式包括HMS(时(时/分分/秒)格式,秒)格式,MSF(分分/秒秒/帧帧)格式和格式和TMSF(轨(轨/分分/秒秒/帧)格式等。帧)格式等。MCI提供了多
25、个宏以进行媒体的时间格式变换,这些提供了多个宏以进行媒体的时间格式变换,这些宏有:宏有:现在学习的是第19页,共42页3.23.2媒体控制接口类媒体控制接口类MCI MCI 3.2.1 MCI3.2.1 MCI命令命令MCI_HMS_HOUR:检索检索HMS值的小时字段;值的小时字段;MCI_HMS_MINUTE:检索检索HMS值的分钟字段;值的分钟字段;MCI_HMS_SECOND:检索检索HMS值的秒字段;值的秒字段;MCI_MAKE_HMS:创建创建HMF值;值;MCI_MAKE_MSF 创建创建MFS值;值;MCI_MAKE_TMSF:创建创建TMSF值;值;MCI_MSF_FRAME
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 多媒体 音频 播放 优秀 PPT
限制150内