CWaveFile waveFile;实例化后才可以使用 CWaveFile的函数。实例化后调用Open函数来打开WAV文件,Open有三个参数:
HRESULT Open(LPWSTR strFileName, WAVEFORMATEX* pwfx, DWORD dwFlags);第一个参数,是文件所在的路径;
#define WAVEFILE_READ 1 #define WAVEFILE_WRITE 2
HRESULT Read(BYTE* pBuffer, DWORD dwSizeToRead, DWORD* pdwSizeRead);第一个参数表示自己申请的内存空间,第二个参数表示需要读取的数据大小,第三个参数表示实际读取的数据大小(因为有可能所剩余的数据并没有你想要读取的那么多了,比如你每次读取10K,但是数据只有9.2K了)。
#pragma once #include "XAudio2.h" #include "WaveFile.h" int main(int argc, char *argv[]) { CWaveFile waveFile; HRESULT hr = waveFile.Open(L"C:\\Users\\dlp\\Desktop\\24bit-48khz.wav", NULL, WAVEFILE_READ);//加载文件 if (FAILED(hr)) return 0; WAVEFORMATEX *waveFormat = waveFile.GetFormat();//获取文件格式 DWORD size = waveFile.GetSize();//获取文件的大小 BYTE *pData = new BYTE[size];//申请内存空间,用于保存数据 hr = waveFile.Read(pData, size, &size);//读取文件内容 if (FAILED(hr)) return 0; waveFile.Close();//关闭文件 delete []pData; pData = NULL; return 0; }
备注:请尊重版权,转载请联系作者QQ:1245178753。
交流请加:
群名称:XAudio2 交流群
群 号:233537460