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

タイプ 'System.ArgumentException' の初回例外が NAudio.dll で発生しました タイプ 'System.ArgumentException' の未処理の例外が NAudio.dll で発生しました

追加情報: すべてのミキサー入力は同じ WaveFormat でなければなりません

4

1 に答える 1

2

ユーザー エラー: サンプル レートが一致しません。

この行:

myWaveProvider = new MyWaveProvider16();

次のようにする必要があります。

myWaveProvider = new MyWaveProvider16(8000, 1);

それ以外の場合、デフォルトは 44100 です。

于 2012-10-13T01:45:58.147 に答える