void write_wave_head(FILE* wav_file, LPCWAVEFORMATEX pcfxFormat, int s_size){
uint32_t size;
fwrite("RIFF", 1, 4, wav_file);
size = s_size+44;
fwrite(&size, 1, 4, wav_file);
fwrite("WAVE", 1, 4, wav_file);
/* write fmt subchunk */
fwrite("fmt ", 1, 4, wav_file);
size = 16;//sizeof(WAVEFORMATEX)
fwrite(&size, 1, 4, wav_file);
fwrite(pcfxFormat, 1, 16, wav_file);
/* write data subchunk */
fwrite("data", 1, 4, wav_file);
size = s_size;
fwrite(&size, 1, 4, wav_file);
}
用法:
///seek to begin, rewrite wave head
fseek(file_wave, 0, SEEK_SET);
write_wave_head(file_wave, &wfx, buffer_size);
/// seek to end, write new wave data
fseek(file_wave, 0, SEEK_END);
fwrite(wavebuffer, buffer_size, 1, file_wave);
wave文件头图解: