荔园在线

荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀

[回到开始] [上一篇][下一篇]


发信人: Deny (相信我,没错的!), 信区: Program
标  题: WINDOWS下的低级音频函数介绍
发信站: 荔园晨风BBS站 (Mon Nov 19 18:13:49 2001), 转信

 WINDOWS下的低级音频函数介绍
  在WINDOWS下,音频函数有多种类型,如MCI、多媒体OLE控制、高级音频等,
使用方法都比较简单。但如果想编写一个功能较强大的音频处理程序,那就必须使
用低级音频函数和多媒体文件I/O来控制音频设备的输入和输出。因为低级音频函
数可直接与音频驱动程序交互,通过窗口消息或回调(CALL BACK)函数来管理音
频数据块的记录和播放,控制非常灵活。重要的一点是,低级音频函数为我们提供
了一个设备无关的接口。

 播放数字音频

   在使用音频设备之前,必须打开设备驱动程序。为可靠起见,在播放和记录
音频之前,要确定系统音频设备的能力。在用完之后必须关闭音频设备。具体流程
如下:

   1.查询设备数目和能力

     使用waveOutGetNumDevs和waveOutGetDevCaps来获取波形输出设备的个
数和能力。只有在确定设备存在之后,才可以打开设备、使用设备。

   2.打开波形输出设备

     使用waveOutOpen为进行重放操作打开特定的波形设备。该函数打开与指
定的设备ID相关联的设备,并以给出指定内存句柄的方法返回打开波形设备的句
柄。

     当有多种波形输出设备时,建议使用WAVE_MAPPER常数作为设备ID,这使
waveOutOpen函数会自动挑选最适合播放给定的数据格式的设备。

   3.准备音频数据块

     在波形重放之前,要准备好音频数据块。将数据块传递给设备驱动程序
就实现了重放。使用的函数是waveOutPerpareHeader。在用完数据块之后,必须用
waveOutUnPrepareHeader函数来清除对波形数据块的准备。

   4.发送音频数据块

     在成功打开波形输出设备之后,就可以进行波形重放,使用
waveOutWrite函数。在调用该函数后,必须等到设备驱动程序使用完音频数据块之
后才可以把该数据块释放掉。

   5.管理波形重放

     在使用低级音频函数播放音频时,应用程序必须不断地向设备驱动程序
提供数据块,直到播放结束。WINDOWS提供两种方法管理波形重放:一是使用窗口
消息管理,二是使用低级回调函数管理。另外,通过使用waveOutPause、
waveOutRestart和waveOutReset来进行暂停、重新启动和停止播放。

   6.关闭波形设备

     用完设备之后,必须调用waveOutClose函数关闭波形输出设备,以便其
他程序可以使用设备。

   记录数字音频

     记录数字音频的方法基本同播放过程,不同在于记录期间是不提供诸如
暂停和重新开始这样的控制的。使用到的函数包括:waveInGetDevCaps、
waveInOpen、waveInPrepareHeader、waveInUnPrepareHeader、waveInAddBuffer
、waveInReset、waveInStart、waveInStop、waveInClose等。




--
我是$userid         ,我怕谁!^_^编程资料:1.201/study/my document/,也许有你要?
 │ 你问我这世界最远的地方在哪里              你问我这世界最后的真爱在哪里   │
 │ 我将答案抛向蓝天之外落在你心底            我把线索指向大海之外直达我怀里 │
 │ 如果你的爱总是逆向行驶                    如果你的心总是闭上耳朵         │
 │ 你说你爱我  我怎么能跟得上你              我说我爱你  你怎么能听得下去   │
 └─────────────────────────────────────┘

※ 来源:·荔园晨风BBS站 bbs.szu.edu.cn·[FROM: 192.168.1.201]


[回到开始] [上一篇][下一篇]

荔园在线首页 友情链接:深圳大学 深大招生 荔园晨风BBS S-Term软件 网络书店