0

我想将 double[] 数组导出到 wav 文件。我在处理标题(RIFF、fmt 等)时遇到了一些问题。任何想法我应该如何处理这个?也许使用 BitConverter 将 double[] 数组转换为 byte[] 数组,然后使用 NAudio 的 waveFileWriter?非常感谢任何示例代码!

4

2 回答 2

1

您将不得不根据标准编写 WAV 文件的所有必要位。您也会遇到单声道与立体声和采样率问题。强烈建议您查看一些已经存在的处理此问题的源代码(我在快速搜索中没有找到任何 C# 版本,尽管有几个 C/C++ 版本)。尝试仅基于标头规范编写代码将被击中或错过

于 2013-10-31T20:10:38.717 回答
1

只需使用 WaveFileWriter 的WriteSample方法将每个样本一个一个地写入,或者一WriteSamples键完成。由于您有一个双精度数组,因此您可以先使用一些 LINQ 转换为浮点数组。

float[] floatArray = doubleArray.Select(s => (float)s).ToArray();
writer.WriteSamples(floatArray, 0, floatArray.Length);

这会将每个样本写入WaveFileWriter,转换为正确的位深度(例如 16 位或 32 位 IEEE 浮点数),这取决于您在打开WaveFileWriter

于 2013-10-31T20:35:25.327 回答