§ Структура заголовка

Замечание. Дана частичная информация по формату WAV. Только для скоростного пользования.
unsigned int   -- 4 байта (32 бита)
unsigned short -- 2 байта (16 бит)
// 44 байта https://audiocoding.ru/articles/2008-05-22-wav-file-structure/
struct __attribute__((__packed__)) WAVEFMTHEADER {

    unsigned int    chunkId;        // RIFF 0x52494646
    unsigned int    chunkSize;
    unsigned int    format;         // WAVE 0x57415645
    unsigned int    subchunk1Id;    // fmt (0x666d7420)
    unsigned int    subchunk1Size;  // 16
    unsigned short  audioFormat;    // 1
    unsigned short  numChannels;    // 2
    unsigned int    sampleRate;     // 44100
    unsigned int    byteRate;       // 88200
    unsigned short  blockAlign;     // 2
    unsigned short  bitsPerSample;  // 8
    unsigned int    subchunk2Id;    // data 0x64617461
    unsigned int    subchunk2Size;  // Количество байт в области данных.
};

§ Описание полей

chunkId       -- сигнатура "RIFF"
chunkSize     -- размер заголовка 0x24 + размер данных (либо размер файла)
format        -- сигнатура "WAVE"
subchunk1Id   -- сигнатура "fmt "
subchunk1Size -- 16 (PCM 8 Левый + 8 Правый)
audioFormat   -- тип 1 (обычный)
numChannels   -- 2, количество каналов (стерео)
sampleRate    -- 44100, xастота дискретизации
bitsPerSample -- 88200, байт на 1 семпл (2 канала x 44100)
blockAlign    -- 2 блока на семпл (2 байта)
bitsPerSample -- 8 бит
subchunk2Id   -- сигнатура "data"
subchunk2Size -- размер оставшихся данных

§ Запись заголовка на С

  • wav_size — полный размер данных
  • FILE* wave_file — файл
struct WAVEFMTHEADER head = {
    0x46464952,
    (wav_size + 0x24),
    0x45564157,
    0x20746d66,
    16,     // 16=PCM
    1,      // Тип
    2,      // Каналы
    44100,  // Частота дискретизации
    88200,  // Байт в секунду
    2,      // Байт на семпл (1+1)
    8,      // Битность
    0x61746164, // "data"
    wav_size
};

fseek(wave_file, 0, SEEK_SET);
fwrite(&head, 1, sizeof(WAVEFMTHEADER), wave_file);
4 окт, 2021
© 2007-2022 Мышь летит на дому