将数据从缓冲区写入磁盘上的波形文件[关闭]

Posted

技术标签:

【中文标题】将数据从缓冲区写入磁盘上的波形文件[关闭]【英文标题】:Writing data from buffer to wave file on disk [closed] 【发布时间】:2014-12-27 12:12:31 【问题描述】:

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

【问题讨论】:

你使用什么语言?.. 程序必须用MFC写,所以用C++,VS 2012 【参考方案1】:

您必须自己创建文件。

您可以使用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

【讨论】:

以上是关于将数据从缓冲区写入磁盘上的波形文件[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C 语言文件操作 ( fflush 函数 | 刷新缓冲区示例代码 )

使用 boost-asio 时实时将缓冲区写入磁盘

为啥使用 OS 和磁盘缓冲区写入文件后读取操作更快?

SSD写入很慢是怎么回事

USB 磁盘写入延迟(Windows)

Python之文件的打开关闭