Это первый код, который я использовал:
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 до где-то в 4000-х, прежде чем они прыгнули вверх где-то в 8000-х, а затем снова начали считать на 1.Я пробовал разные файлы, чтобы увидеть, если это проблема, и она делает то же самое.Как мне это исправить?