Используя Visual Studio C ++, пытаюсь скопировать часть данных файла WAV, используя ifstream :: read ().Поток странно прыгает - PullRequest
0 голосов
/ 14 февраля 2019

Это первый код, который я использовал:

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

...