0

我使用 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

4

1 回答 1

2

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

这一行:

myWaveProvider = new MyWaveProvider16();

应该:

myWaveProvider = new MyWaveProvider16(8000, 1);

否则默认为 44100。

于 2012-10-13T01:45:58.147 回答