这是我使用的第一个代码:
ifstream wavFile;
wavFile.open("saxaphone.wav");
char buffer[10000];
wavFile.seekg(44); //data starts at the 44 byte of a wav file
wavFile.read(buffer, 10000);
//file has more than 13000 data bytes so there should
//be plenty to fill the buffer
当我使用Windows waveOut API播放此缓冲区时,它只播放了大约5000个缓冲区值的连贯声音。
这是我用来尝试和调试的代码:
ifstream wavFile;
wavFile.open("saxaphone.wav");
char buffer[10000];
wavFile.seekg(44); //data starts at the 44 byte of a wav file
for(unsigned int i = 0; i < 10000; i++){
wavFile.read(&buffer[i], 1);
cout << wavFile.tellg() << '\n';
}
此输出值从45到4000s的某个位置,然后又跳到8000s的某个位置,然后又开始加1。我尝试了不同的文件,看是否是问题所在,并且它做同样的事情。我该如何解决?