使用NAudio处理后播放wav文件

时间:2013-11-06 10:59:57

标签: c# matlab audio naudio

我已经使用NAudio将双数组输出[]转换为wav文件。该文件在VLC播放器和Windows Media Player中播放正常,但是当我尝试在Winamp中打开它,或者使用wavread()在Matlab中访问它时,我失败了..(在Matlab中我收到错误:“无效的波形文件。原因: WAV文件中的块大小信息不正确。“,这显然意味着标题有问题)。关于如何解决这个问题的任何想法?这是将数组转换为WAV的代码:

float[] floatOutput = output.Select(s => (float)s).ToArray();
WaveFormat waveFormat = new WaveFormat(16000, 16, 1);
WaveFileWriter writer = new WaveFileWriter("C:\\track1.wav", waveFormat);
writer.WriteSamples(floatOutput, 0, floatOutput.Length);

1 个答案:

答案 0 :(得分:2)

您必须丢弃WaveFileWriter,以便正确修复WAV文件头。 using语句是执行此操作的最佳方式:

float[] floatOutput = output.Select(s => (float)s).ToArray();
WaveFormat waveFormat = new WaveFormat(16000, 16, 1);
using (WaveFileWriter writer = new WaveFileWriter("C:\\track1.wav", waveFormat))
{
    writer.WriteSamples(floatOutput, 0, floatOutput.Length);
}