关于波形音频.docx
《关于波形音频.docx》由会员分享,可在线阅读,更多相关《关于波形音频.docx(14页珍藏版)》请在三一办公上搜索。
1、关于波形音频关于波形音频 增加声音到你的应用程序中,把它变得更加实用的有趣。你可以通过使用声音在关键步骤提高用户的效率,帮助他们避免出错,或者让他们知道操作已经结束。你可以帮助他们找到更多的乐趣通过增加音乐或者声音。 有几种方法可以通过使用波形音频增加声音到你的程序中。最简单的方法使用PlaySound函数。大多数的其它的方法都通过低级的API实现。使用mci函数可以方便的把声音增加到你的程序中,它比使用低级音频函数要速度。 要获得更加多的信息,看下列主题: PlaySound函数 你可以使用PlaySound函数播放音频波形文件。 PlaySound函数允许你指定一个声音文件通过以下三种方式
2、: 作为系统提醒,使用在WIN.INI文件或注册表中的系统别名 使用文件名 作为一个资源ID PlaySound函数允许你连续的循环播放声音直至你再次调用PlaySound函数,指定Null或资源ID在pszsound参数中 你可以使用PlaySound同步或异步播放声音,使用函数控制它们的行为当它必须共享系统资源 .波形音频接口 下列主题描述波形音频接口,这是使用的应用程序,需要最大限度地控制音频设备。这些函数和接口的结构以wave为命名前缀。 1.设备和数据类型 本节介绍波形音频设备,包括怎么打开,关闭和查询设备的能力。同时还介绍了怎样通过设备句柄和设备标识符在系统中跟踪设备。 打开波形音
3、频输出设备 通过使用waveOutOpen函数打开一个波形音频设备播放。这个函数通过指定一个设备标识符附加到打开的设备上,返回一个打开设备的句柄。 一些多媒体计算机有多个波形音频输出设备,除非你想在系统中打开指定的波形音频输出设备,你必须在打开设备时使用WAVE_MAPPER标志标识打开的设备。waveOutOpen函数选择一个系统中最佳的设备播放指定的数据格式。 查询音频设备 Windows提示了以下函数决定系统中有多少个设备可用 函数 描述 auxGetNumDevs 选取一些系统中存在的辅助输出设备 WaveInGetNumDevs 选取一些系统中存在的波形音频输入设备 WaveOutG
4、etNumDevs 选取一些系统中存在的波形音频输出设备 音频设备通过一个设备标识符来标识。设备标识符由系统中的设备数目决定。设备标识符的范围从0到最少1个在现在的设备数目中。例如,如果你的系统中有两个波形音频输出设备,可用的设备标符识从0到1. 当你确定系统中有多少个设备类型时,你可以使用下列其中之一的函数来查询每一个设备的能力: 函数 描述 auxGetDevCaps 返回一个输出设备的能力 waveinGetDevCaps 返回一个波形音频输入设备的能力 waveOutGetDevCaps 返回一个波形音频输出设备的能力 下列的每一个函数填充一个指定设备能力的数据结构。下列表格列出了数据
5、结构相对应的函数 函数 结构 auxgetDevCaps AUXCAPS waveInGetDevCaps WAVEINCAPS waveOutGetDevCaps WAVEOUTCAPS 标准的格式列在WAVEOUTCAPS结构成员的dwFormats中。波形音频设备可以支持一个非标准的格式。为了确定一个特殊的格式是否被这个设备支持,你可以指定WAVE_FORMAT_QUERY标志调用waveOutOpen 函数。这个标志位不会打开设备。你指定的格式问题的WAVEFORMATEX结构所指向pwfx参数传递给waveOutOpen 。关于如何设备这个结构,请看设备和数据类型一节。 波形音频输出
6、设备的能力不同,结构WAVEOUTCAPS中的dwSupport成员声明一个设备是否支持这样的能力,如:声音调节等 设备句柄和设备标识符 每个函数打开一个音频设备指定一个设备标识符,一个指向内存的指针,一些参数惟一的确定一个设备。这个内存的位置填充了一个设备句柄。通过使用这个设备句柄当调用其它声频函数时来标识一个打开设备。 音频设备标识符和句柄的区别是微妙但是很重要: 设备标识符确定一个明确的设备数字在一个系统中。这个数字通过auxGetNumDevs,auxInGetNumDevs或者waveOutGetNumDevs函数 当一个设备驱动通过waveInOpen或waveOutOpen函数打
7、开时,返回一个设备句柄。 没有函数打开或关闭辅助音频设备。辅助音频设备同波形音频设备一样不需要被打开或被关闭,因为没有持续的数据与它们联系。所有的辅助音频函数使用设备标识符来标识设备。 波形音频输出数据类型 类型 描述 HWAVEOUT 波形音频输出设备的句柄 WAVEFORMATEX 波形音频设备所支持的指定的结构体, WAVEHDR 波形音频输入数据的结构体头 WAVEOUTCAPS 经常用作查询特殊波形音频输出设备能力 指定波形音频数据类型 当你调用waveOutOpen函数打开个设备驱动来播放或者查询驱动是否支持特殊的数据格式,用pwfx参数来指定一个指向WAVEFORMATEX的结构
8、的指针继续波形音频格式的请求。WAVEFORMATEX结构是一个扩展的WAVEFORMAT结构。它包括WAVEFORMAT所有的成员,并且增加了两个新成员:wBitsPerSample成员,它包含了额外的PCM格式信息,cbSize成员在最后。你可以随着cbSize增加数据到结构中,填写的大小的cbSize的数据。你可以使用WAVEFORMATEX结构来描述PCM数据,虽然你可以使用PCMWAVEFORMAT结构。当波形音频格式类型不是PCM时,你必须使用WAVEFORMATEX来代替WAVEFORMAT。 过时的WAVEFORMAT结构不包括所有描述PCM格式的信息。PCMWAVEFORMA
9、T结构包括一个WAVEFORMAT结构随着增加一个新成员包括PCM所指定的信息。PCMWAVEFORMAT结构也被WAVEFORMATEX结构所取代. 写时波形音频数据 在成功打开波形音频输出设备驱动后,你可以开始播放声音,Windows提供waveOutWrite函数来发送数据块给波形音频输出设备。 使用WAVEHDR结构来指定你用waveOutWrite发送的波形音频数据块。这个结构包括一个指向锁定的数据块的指针,这个数据块的大小和一些标志。这个数据块必须在你使用之前准备。更多的关于准备数据块的信息,请参考Audio Data Blocks 在你使用waveOutWrite发送一个数据块到
10、输出设备后,你必须等待直到设备驱动完成完成数据块释放之前,如果你发送多个数据块,你必须监测完成的数据块来知道何时增加额外的数据块,更多的信息,请看Audio Data Blocks. PCM波形音频数据格式 在WAVEHDR结构中lpData结构成员指向一个波形音频数据采样,对于8位的PCM数据,每一个样本代表单一的无符号数据字节,对于16位PCM数据,每一个样本代表一个16位的有符号数值。以下表格总结了最大,最小和适中的PCM波形音频数据数值。 数据格式 最大值 最小值 适中的值 8位PCM 255 0 128 16位PCM 32767 -32768 0 PCM数据包 略 关闭波形音频输出设
11、备 在完成波形音频播放之后,调用waveOutclose函数来关闭输出设备,如果在波形音频文件正在播放时调用waveOutClose,关闭操作将会失败,函数会返回一个错误代码来表明设备没有被关闭。如果你不想等到播放完就关闭设备,调用waveOutreset函数来关闭,这个允许结构播放和关闭设备。确定在关闭之前使用waveOutUnprepareHeader函数来清除所有准备好的数据块。 2.播放波形音频文件 在你的应用程序中使用函数,宏以及消息来播放声音是非常容易的。技术和内容文档在这里只能操作波形音频。如果你想增加音乐到你的应用程序中,不关心别的种类的声音,你也许可以使用MIDI。对于播放M
12、IDI音乐的讨论,请看MCIWnd Windows Class。对于MIDI接口的讨论,请看Musical Instrument Digital Interface (MIDI). 你可以调用以下的函数在你的程序中播放波形音频。 函数 描述 MessageBeep 播放指定的系统提醒声音 sndPlaySound 播放系统注册表中或指定的文件名的声音 PlaySound 提供所有sndPlaySound的功能和直接通过资源 MessageBeep是一个标准的Win32 API函数,因为它的能力非常有限,它的文档在别的地方,这里不再讨论。 函数列表提供以下的方法来播放波形音频: 通过系统级别来播
13、放波形音频文件。 播放注册表中指定的波形音频文件。 播放内存中的WAVE资源 播放存储在硬盘上或CD-ROM中的波形音频文件 sndPlaySound和PlaySound函数加载一个波形音频文件到内存中,限制它所能播放的大小。使用sndPlaySound和PlaySound来播放一个相对较小的波形音频文件,最大约为100K。这两个函数同样也接受格式化可播放的声音数据,包括音频mapper. 对于大的声音文件,使用MCI服务,更多的信息,看MCI. 使用Windows消息来控制波形音频播放 以下的消息可以被发送到一个窗口消息过程函数来控制波形音频的播放。 消息 描述 MM_WOM_CLOSE 使
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 关于 波形 音频
![提示](https://www.31ppt.com/images/bang_tan.gif)
链接地址:https://www.31ppt.com/p-3309952.html