NAudio一起播放多个声音给出异常“所有混音器输入必须具有相同的WaveFormat”

时间:2014-04-28 22:16:48

标签: c# .net vb.net audio naudio

我正在尝试使用NAudio MixingSampleProvider的AddMixerInput方法同时播放多个声音文件。我正在使用此页面上的AudioPlaybackEngine:https://gist.github.com/markheath/8783999

然而,当我尝试播放不同的文件时,播放一些声音时出现异常:"所有混音器输入必须具有相同的WaveFormat"这可能是因为我的声音文件没有相同的采样率(我看到一些文件有7046作为采样率,而不是44100)。

有没有办法修改CachedSound类,以便在读取文件时将采样率全部转换为44100?

谢谢!

1 个答案:

答案 0 :(得分:3)

您无法将音频流混合在一起,而无需将它们转换为相同的采样率。在NAudio中有三种访问重采样器的方法:

  • WaveFormatConversionStream - 它使用引擎盖下的ACM重采样器组件。请注意,您可能会遇到重新采样IEEE float的问题。
  • MediaFoundationResampler - 这使用MediaFoundation。它允许您调整重采样质量。
  • WdlResamplingSampleProvider - 这是最新的NAudio中的全新产品,并提供完全管理的重新取样。

除了匹配采样率之外,您还需要匹配通道数。 NAudio有多种方法可以将单声道变成立体声,反之亦然。