双阵列到wav

时间:2013-10-31 19:58:50

标签: c# wav naudio

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

只需使用WaveFileWriter的WriteSample方法逐个编写每个示例,或WriteSamples一次性执行此操作。由于你有一个双精度数组,你可以先使用一些LINQ转换为浮点数组。

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

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