问题
windows播放WAV音频文件,一般使用API函数,如PlaySound。实际使用发现,从调用PlaySound到实际开始播放存在200ms以上的延时,在游戏编程中音效实时性是个需要解决的问题。
本文主要讨论,windows播放WAV文件的衍生问题:如何测量WAV文件的播放时长?
解决方法
1、WAV文件头部格式
WAV(Waveform Audio File Format)是一种常见的音频文件格式,它以无损的方式存储音频数据。每个WAV文件都包含一个文件头(Header)来描述音频的格式和属性。下面是WAV文件头的一般格式:
typedef struct {
char riff[4]; // "RIFF"标识符
DWORD fileSize; // 文件总大小(不包括riff和fileSize字段本身的大小)
char wave[4]; // "WAVE"标识符
char fmt[4]; // "fmt "标识符
DWORD fmtSize; // fmt块大小
WORD audioFormat; // 音频格式代码(例如,PCM为1)
WORD numChannels; // 声道数
DWORD sampleRate; // 采样率
DWORD byteRate; // 每秒的字节数
WORD blockAlign; // 数据块对齐单位(每个采样帧的字节数)
WORD b