荔园在线
荔园之美,在春之萌芽,在夏之绽放,在秋之收获,在冬之沉淀
[回到开始]
[上一篇][下一篇]
发信人: 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软件 网络书店