我试图执行以下设置,并且在使用实际输出时它工作正常。我试着用一个定时器,它工作了一段时间,但后来失败了,因为它漂移了一下,我得到一个缓冲区完全例外。我不知道什么是正确的方法是做这件事,我试图使用一个定时器,用于读取NAudio缓冲区的虚拟输出
var mixSampleProvider = new MixingSampleProvider(resampleWaveFormat);
mixSampleProvider.AddMixerInput(inputAResampler);
mixSampleProvider.AddMixerInput(inputBResampler);
var mixWaveProvider = new SampleToWaveProvider(mixSampleProvider);
savingWaveProvider = new SavingWaveProvider(mixWaveProvider);
System.Timers.Timer timer = new System.Timers.Timer(98);
timer.Elapsed += (sender, args) =>
{
var count = resampleWaveFormat.AverageBytesPerSecond/10;
var dummy = new byte[count];
savingWaveProvider.Read(dummy, 0, count);
};
timer.Start();
我试着计算出每次打勾时应该读多少,例如
var readCount = Math.Min(inputABufferedWaveProvider.BufferedBytes, inputBBufferedWaveProvider.BufferedBytes);
,但不能让它工作,我曾尝试使用DataAvailable事件,但因为有两个输入,将它们混合,我不能说要么工作。
我工作,谢谢:) –