将数据从缓冲区写入磁盘上的wav文件

时间:2014-12-27 12:12:31

标签: c++ winapi mfc audio-recording wave

我正在编写一个使用waveOutOpen和PlaySound播放wave文件的程序。现在我必须编写一个函数来记录磁盘上Wave文件中的麦克风语音。我使用writeInOpen和waveInAddBuffer来记录缓冲区中的声音但我找不到一个简单的类来操作wave文件并将缓冲区内容复制到文件.wav。谢谢你的建议!

1 个答案:

答案 0 :(得分:0)

您必须自己创建文件。

您可以使用Multimedia File I/O API,特别是mmioOpen()mmioCreateChunk()mmioAscend()mmioWrite()功能。您需要很好地理解WAVE文件格式的工作原理,WAVEFORMAT/EX结构如何工作等,以便您知道要编写哪些部分以及如何正确编写它们。

或者使用DirectX的DirectSound API,特别是IDirectSoundCaptureBuffer8接口和CWaveFile帮助程序类:

Writing to a WAV file

在您了解这两种方法之前,您应该考虑使用现有的库为您做一些艰苦的工作,例如:

Wave Class for Playing and Recording Wave Files