【发布时间】:2015-10-15 16:33:39
【问题描述】:
我正在尝试将WaveIn 麦克风输入转换为不同的 WaveFormat,并将其添加到 MixingSampleProvider。
WaveIn waveIn = new WaveIn(this.Handle);
waveIn.BufferMilliseconds = 25;
waveIn.DataAvailable += waveIn_DataAvailable;
// create wave provider
WaveProvider waveProvider = new BufferedWaveProvider(waveIn.WaveFormat);
WaveFormat commonWaveFormat = WaveFormat.CreateIeeeFloatWaveFormat(44100, 2);
MixingSampleProvider msp = new MixingSampleProvider(commonWaveFormat);
WaveFormatConversionStream wfcs = new WaveFormatConversionStream(commonWaveFormat,new WaveProviderToWaveStream(waveProvider));
msp.AddMixerInput(wfcs);
// create wave output to speakers
waveOut = new WaveOut();
waveOut.DesiredLatency = 100;
waveOut.Init(msp);
其中WaveProviderToWaveStream 是来自this answer 的类。
但是,这给了我WaveFormatConversionStream 的以下异常。
NAudio.MmException:AcmNotPossible calling acmStreamOpen
我试过了
msp.addMixerInput(MediaFoundationResampler(waveProvider, commonWaveFormat).toSampleProvider());
这有效,但在对着麦克风说话和听到输出之间产生了太大的延迟。
【问题讨论】: