C# NAudio将多个声音放在一起,这是个例外;所有混频器输入必须具有相同的波形;

C# NAudio将多个声音放在一起,这是个例外;所有混频器输入必须具有相同的波形;,c#,.net,vb.net,audio,naudio,C#,.net,Vb.net,Audio,Naudio,我尝试使用NAudio MixingSampleProvider的AddMixerInput方法同时播放多个声音文件。我正在使用此页面上的AudioPlaybackEngine: 然而,当我尝试播放不同的文件时,我在播放一些声音时遇到了一个异常:“所有混音器输入必须具有相同的波形”,这可能是因为我的声音文件没有相同的采样率(我看到一些文件的采样率是7046,而不是44100) 有没有办法修改CachedSound类,以便在读取文件时将采样率全部转换为44100 谢谢 如果不将音频流转换为相同的采

我尝试使用NAudio MixingSampleProvider的AddMixerInput方法同时播放多个声音文件。我正在使用此页面上的AudioPlaybackEngine:

然而,当我尝试播放不同的文件时,我在播放一些声音时遇到了一个异常:“所有混音器输入必须具有相同的波形”,这可能是因为我的声音文件没有相同的采样率(我看到一些文件的采样率是7046,而不是44100)

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


谢谢

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

  • 波形转换流-使用发动机罩下的ACM重采样组件。请注意,您可能会在重新采样IEEE浮点值时遇到问题
  • MediaFoundation重采样器-使用MediaFoundation。它允许您调整重采样质量
  • WdlResamplingSampleProvider-这是最新NAudio中的全新产品,提供完全管理的重采样

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

Hi Mark!你是“开火,忘记”音频播放引擎的作者!我很高兴直接得到你的帮助!不幸的是,我完全是NAudio的初学者,这是我第一次真正使用它。我在MediaFoundationResampler上做了一些搜索,找到了您发布的一个示例,它与MixingSampleProvider一起使用。但我不知道如何将它与AudioPlaybackEngine一起使用。你能教我怎么做吗?非常感谢你!我知道怎么做了。MediaFoundationResampler接受IWaveProvider并可以输出IWaveProvider。因此,在获得AudioFileReader后,我们可以在CachedSound类中使用它,然后使用重采样器而不是原始的AudioFileReader。实际上,AudioPlaybackEngine中已经有一个//TODO来显示可以添加重采样器的位置。谢谢你,马克!你的NAudio太棒了!