Юзаю такой код:
struct WAVHEADER
{
// WAV-формат начинается с RIFF-заголовка:
// Содержит символы "RIFF" в ASCII кодировке
// (0x52494646 в big-endian представлении)
char chunkId[4];
// 36 + subchunk2Size, или более точно:
// 4 + (8 + subchunk1Size) + (8 + subchunk2Size)
// Это оставшийся размер цепочки, начиная с этой позиции.
// Иначе говоря, это размер файла - 8, то есть,
// исключены поля chunkId и chunkSize.
unsigned long chunkSize;
// Содержит символы "WAVE"
// (0x57415645 в big-endian представлении)
char format[4];
// Формат "WAVE" состоит из двух подцепочек: "fmt " и "data":
// Подцепочка "fmt " описывает формат звуковых данных:
// Содержит символы "fmt "
// (0x666d7420 в big-endian представлении)
char subchunk1Id[4];
// 16 для формата PCM.
// Это оставшийся размер подцепочки, начиная с этой позиции.
unsigned long subchunk1Size;
// Аудио формат, полный список можно получить здесь http://audiocoding.ru/wav_formats.txt
// Для PCM = 1 (то есть, Линейное квантование).
// Значения, отличающиеся от 1, обозначают некоторый формат сжатия.
unsigned short audioFormat;
// Количество каналов. Моно = 1, Стерео = 2 и т.д.
unsigned short numChannels;
// Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
unsigned long sampleRate;
// sampleRate * numChannels * bitsPerSample/8
unsigned long byteRate;
// numChannels * bitsPerSample/8
// Количество байт для одного сэмпла, включая все каналы.
unsigned short blockAlign;
// Так называемая "глубиная" или точность звучания. 8 бит, 16 бит и т.д.
unsigned short bitsPerSample;
// Подцепочка "data" содержит аудио-данные и их размер.
// Содержит символы "data"
// (0x64617461 в big-endian представлении)
char subchunk2Id[4];
// numSamples * numChannels * bitsPerSample/8
// Количество байт в области данных.
unsigned long subchunk2Size;
// Далее следуют непосредственно Wav данные.
};
int j = 0;
#ifdef _WIN32
file = open("content//konga.wav", _A_ARCH);
#else
file = open(filename, O_RDONLY);
#endif // _WIN32
if (file == -1)
{
printf("Open failed on input file: %s\n", "content//konga.wav");
#ifdef _WIN32
wchar_t path[MAX_PATH];
GetCurrentDirectory(sizeof(path), path);
std::wcout << path << std::endl;
#endif // _WIN32
}
org = 0;
FILE* file_;
errno_t err;
err = fopen_s(&file_, "content//konga.wav", "rb");
if (err)
{
printf_s("Failed open file, error %d", err);
return 0;
}
WAVHEADER header;
fread_s(&header, sizeof(WAVHEADER), sizeof(WAVHEADER), 1, file_);
printf("audioformat:%d\n", header.audioFormat);
printf("bitsPerSample:%d\n", header.bitsPerSample);
printf("blockAlign:%d\n", header.blockAlign);
printf("byteRate:%lu\n", header.byteRate);
printf("chunkId:%s\n", header.chunkId);
printf("chunkSize:%lu\n", header.chunkSize);
printf("format:%s\n", header.format);
printf("numCannels:%d\n", header.numChannels);
printf("sampleRate:%lu\n", header.sampleRate);
printf("subchunk1Id:%s\n", header.subchunk1Id);
printf("subchunk1Size:%lu\n", header.subchunk1Size);
printf("subchunk2Id:%s\n", header.subchunk2Id);
printf("subchunk2Size:%lu\n", header.subchunk2Size);
fclose(file_);
Выхлоп такой в случае хорошего файла https://ibb.co/Rv8hJKZ И в моем случае https://ibb.co/dgBg4Fh