我已经使用NAudio将double数组output []转换为wav文件。该文件在VLC播放器和Windows Media Player中可以正常播放,但是当我尝试在Winamp中打开它,或使用wavread()在Matlab中访问它时,我将失败。(在Matlab中,我收到了错误:“无效的Wave文件。原因: 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);
最佳答案
您必须处置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);
}