我想导出一个双[]数组到一个wav文件。我在操作标题(RIFF,fmt等)时遇到了一些麻烦。任何想法我应该如何处理这个?也许使用BitConverter将double []数组转换为byte []数组,然后使用NAudio的waveFileWriter?任何示例代码非常感谢!双阵列到wav
双阵列到wav
回答
只需使用WaveFileWriter的WriteSample
方法逐个写入每个样本,或者使用WriteSamples
即可在一次打击中完成。既然你有一个双精度数组,你可以使用一点LINQ来首先转换成浮点数组。
float[] floatArray = doubleArray.Select(s => (float)s).ToArray();
writer.WriteSamples(floatArray, 0, floatArray.Length);
这将每个样本写入到WaveFileWriter
,转换到正确的位深度(例如,16位或32位IEEE浮点),它依赖于当你打开WaveFileWriter
您将不得不根据标准编写WAV文件的所有必要位。单声道和立体声以及采样率问题也会有问题。强烈建议你看看已经存在的一些处理这个问题的源代码(我没有在快速搜索中找到任何C#版本,虽然有几个C/C++版本)。试图编写仅基于标题规范的代码将被击中或错过
没”所选WAVEFORMAT我自己也可以找到任何现有的代码。我知道唯一的“快捷方式”是NAudio,但我不确定如何实现这一点。发现这个http://mark-dot-net.blogspot.gr/2011/04/how-to-use-wavefilewriter.html,但它假定输入数组由字节组成 – Cobe
原始音频是字节(实际上是字16通常是位字)。你的浮点数据是什么样的? –
我看着你引用的页面,它有一个将浮点转换为字节流的例子。 –
- 1. 转换双阵列到字节阵列
- 2. n音讯:读wav文件为双阵列
- 3. 转换双阵列双榜阵列
- 4. 转换双阵列到双ArrayList的
- 5. 双TR阵列
- 6. json_decode双阵列
- 7. 双星阵列
- 8. 双阵列SIMD?
- 9. 填充双值双阵列
- 10. 双学位阵列
- 11. 双排序阵列
- 12. 双阵列对应
- 13. Postgres阵列双打
- 14. CLLocationCoordinate2D阵列双打
- 15. 将双阵列中的某些位置复制到另一个双阵列
- 16. 双阵列操作单阵列
- 17. .WAV选择器,写声阵列
- 18. 找到一个双阵列OCCURENCES与jQuery
- 19. C++阵列插入到双载体
- 20. 追加到双阵列方法
- 21. 大双阵列中小双阵列的最佳匹配
- 22. Arrays.asList()。contains()在双双阵列中
- 23. IOS memcpy纹理双阵列
- 24. 生成双阵列的IL
- 25. GDB检查长双阵列
- 26. 双分选阵列用PHP
- 27. 阵列中的双引号
- 28. 爪哇 - 从双阵列
- 29. 转换双阵列JSON
- 30. 初始化双阵列
谢谢! NAudio看起来非常棒!奖励!我很快就会进入;) – Cobe