使用 NAudio 处理后播放 wav 文件
Posted
技术标签:
【中文标题】使用 NAudio 处理后播放 wav 文件【英文标题】:Playing a wav file after processing it with NAudio 【发布时间】:2013-11-06 10:59:56 【问题描述】:我已经使用 NAudio 将双数组 output[] 转换为 wav 文件。该文件在 VLC 播放器和 Windows Media Player 中播放正常,但是当我尝试在 Winamp 中打开它,或使用 wavread() 在 Matlab 中访问它时,我失败了..(在 Matlab 中我收到错误:“ Invalid Wave File。原因: 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】:您必须处理您的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);
【讨论】:
以上是关于使用 NAudio 处理后播放 wav 文件的主要内容,如果未能解决你的问题,请参考以下文章