【问题标题】:NAudio: All mixer inputs must have the same WaveFormatNAudio:所有混音器输入必须具有相同的 WaveFormat
【发布时间】:2026-01-20 16:40:01
【问题描述】:

我使用 Pcm16BitToSampleProvider 将 WaveProvider16 转换为 SampleProvider。然后我将它添加到 MixingSampleProvider。日志确实表明两者都是 IeeeFloat。但是程序在 AddMixerInput 行停止并且错误是所有混音器输入必须具有相同的 WaveFormat。

有没有想过我错过了什么?

    myWaveProvider = new MyWaveProvider16();
    mySampleProvider = new Pcm16BitToSampleProvider(myWaveProvider);
    mixerBusWaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(8000, 1);
    myMixer = new MixingSampleProvider(mixerBusWaveFormat);
    myMixerSampleSource = new MixerSampleSource();

    Debug.WriteLine("mySampleProvider waveformat:  " + mySampleProvider.WaveFormat.ToString());
    Debug.WriteLine("myMixer waveformat:  " + myMixer.WaveFormat.ToString());
    myMixer.AddMixerInput(mySampleProvider);

输出:

mySampleProvider 波形格式:IeeeFloat

myMixer 波形在:IeeeFloat

在 NAudio.dll 中出现“System.ArgumentException”类型的第一次机会异常 NAudio.dll 中发生了“System.ArgumentException”类型的未处理异常

附加信息:所有混音器输入必须具有相同的 WaveFormat

【问题讨论】:

    标签: naudio


    【解决方案1】:

    用户错误:采样率不匹配。

    这一行:

    myWaveProvider = new MyWaveProvider16();
    

    应该是:

    myWaveProvider = new MyWaveProvider16(8000, 1);
    

    否则默认为 44100。

    【讨论】:

      最近更新 更多