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