.net NAudio同时播放多个声音时出现异常“所有混音器输入必须具有相同的WaveFormat”

oknwwptz  于 2023-05-19  发布在  .NET
关注(0)|答案(2)|浏览(273)

我试图使用NAudio MixingSampleProvider的AddMixerInput方法同时播放多个声音文件。我正在使用AudioPlaybackEngine在此页面找到:https://gist.github.com/markheath/8783999
但是,当我试图播放不同的文件时,在播放一些声音时会出现异常:“所有混音器输入必须具有相同的WaveFormat”这可能是因为我拥有的声音文件没有相同的采样率(我看到一些文件有7046作为采样率,而不是44100)。
有没有办法修改CachedSound类,以便在阅读文件时将采样率全部转换为44100?
谢谢!

bvhaajcl

bvhaajcl1#

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

  • WaveFormatConversionStream -这在后台使用ACM重采样器组件。请注意,使用此方法重新采样IEEE浮点数可能会遇到问题。
  • MediaFoundationResampler -使用MediaFoundation。它允许您调整重采样质量。
  • WdlResamplingSampleProvider -这是最新NAudio中的全新功能,提供完全托管的重采样。

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

iaqfqrcu

iaqfqrcu2#

对于文件播放,请修改PlaySound:

public void PlaySound(string fileName)
{
    var input = new AudioFileReader(fileName);
    AddMixerInput(new WdlResamplingSampleProvider(input, mixer.WaveFormat.SampleRate));
}

相关问题