Browse Source

update wav_recorder.cpp

master
zhaohe 2 years ago
parent
commit
437670b0e4
  1. 24
      core/components/audio/wav_recorder.cpp

24
core/components/audio/wav_recorder.cpp

@ -9,14 +9,12 @@ void WavRecorder::writeVoice(string filename, uint32_t sample_rate, uint16_t bit
WAVHeader wavHeader; WAVHeader wavHeader;
// logger->info("writeVoice filename:{} {} {} {} {}", filename, sample_rate, bits_per_sample, num_channels, size); // logger->info("writeVoice filename:{} {} {} {} {}", filename, sample_rate, bits_per_sample, num_channels, size);
file.open(filename, ios::out | ios::binary | ios::app); file.open(filename, ios::out | ios::binary | ios::app);
#if 1
/** /**
* @brief 44 * @brief 44
*/ */
file.seekp(0, ios::end); file.seekp(0, ios::end);
uint32_t filesize = file.tellp();
if (filesize < 44) {
if (file.tellp() < 44) {
wavHeader.initialize(sample_rate, bits_per_sample, num_channels, 0); wavHeader.initialize(sample_rate, bits_per_sample, num_channels, 0);
file.seekp(0, ios::beg); file.seekp(0, ios::beg);
file.write((char*)wavHeader.data(), wavHeader.size()); file.write((char*)wavHeader.data(), wavHeader.size());
@ -26,12 +24,18 @@ void WavRecorder::writeVoice(string filename, uint32_t sample_rate, uint16_t bit
/** /**
* @brief * @brief
*/ */
file.seekp(4, ios::beg);
uint32_t chunk_size = filesize + size - 8;
file.write((char*)&chunk_size, 4);
file.seekp(40, ios::beg);
uint32_t subchunk2_size = filesize + size - 44;
file.write((char*)&subchunk2_size, 4);
{
file.seekp(0, ios::end);
uint32_t filesize = file.tellp();
file.seekp(4, ios::beg);
uint32_t chunk_size = filesize - 8;
file.write((char*)&chunk_size, 4);
file.seekp(40, ios::beg);
uint32_t subchunk2_size = filesize - 44;
file.write((char*)&subchunk2_size, 4);
}
#endif
file.close(); file.close();
} }
Loading…
Cancel
Save