使用 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 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用 NAudio 转换为 WAV 后使用 SoundPlayer 播放 MP3

Naudio:如何播放 MP3 和 WAV 文件?

使用 NAudio 从内存流中播放 .wma

NAudio - wav 的流式字节 [] 使其播放缓慢

在 NAudio 中附加 WAV 标头

HRESULT:尝试使用 NAudio 库播放 mp2 编码的 wav 文件时出现 0xC00D5212