waveOutOpen – 打开波形输出设备
waveOutPrepareHeader – 准备播放缓冲区
waveOutUnprepareHeader – 取消播放缓冲区
waveOutWrite – 将数据写入波形输出设备
waveOutReset – 波形输出设备复位(清除正在播放的数据,停止播放)
waveOutPause – 波形输出设备暂停(暂停播放)
waveOutRestart – 波形输出设备恢复(继续播放)
waveOutClose – 关闭波形输出设备
播放时使用的顺序大致如下:
waveOutOpen 打开设备
waveOutPrepareHeader 准备缓冲区
waveOutWrite 写入波形设备
waveOutReset 波形设备复位
waveOutClose 关闭波形设备
至于暂停就更简单,播放时执行waveOutPause时暂停播放,再执行waveOutRestart时继续播放。
现在工具已经齐备了,下来就是准备材料了。对于这个播放器来说,最重要的材料是RIFF档案、WAVEFORMATEX和WAVEHDR这三个结构。下面就简单介绍一下这三个结构:
RIFF全称为资源互换文件格式(ResourcesInterchange FileFormat),RIFF文件是windows环境下大部分多媒体文件遵循的一种文件结构,RIFF文件所包含的数据类型由该文件的扩展名来标识,能以RIFF文件存储的数据包括:音频视频交错格式数据(.AVI) 波形格式数据(.WAV) 位图格式数据(.RDI) MIDI格式数据(.RMI)调色板格式(.PAL)多媒体电影(.RMN)动画光标(.ANI)其它RIFF文件(.BND) 。具体格式如下:
WAV文件的基本格式
内容 |
变量名 |
大小 |
取值 |
|||
RIFF头 |
文件标识符串 |
fileId |
4B |
“RIFF” |
||
头后文件长度 |
fileLen |
4B |
非负整数(=文件长度-8) |
|||
数据类型标识符 |
波形文件标识符 |
waveId |
4B |
“WAVE” |
||
格式块 |
块头 |
格式块标识符串 |
chkId |
4B |
“fmt ” |
|
头后块长度 |
chkLen |
4B |
非负整数(= 16或18) |
|||
块数据 |
格式标记 |
wFormatTag |
2B |
非负短整数(PCM=1) |
||