C# NAudio流读取方法延迟

C# NAudio流读取方法延迟,c#,.net,naudio,C#,.net,Naudio,我做了我自己的哔哔声代码作为练习。然而,它是落后的 2-3声蜂鸣声滞后,然后第3声或第4声来得更快 有人能解释一下原因吗?我如何消除延迟 我使用了马克·希思博客和NAudio github代码中的代码 这是主控制台代码: var waveSine = new BeepStream(waveWhite.WaveFormat); var sineChannel = new WaveChannel32(waveSine) { PadWithZeroes = false }; List<Wave

我做了我自己的哔哔声代码作为练习。然而,它是落后的

2-3声蜂鸣声滞后,然后第3声或第4声来得更快

有人能解释一下原因吗?我如何消除延迟

我使用了马克·希思博客和NAudio github代码中的代码

这是主控制台代码:

var waveSine = new BeepStream(waveWhite.WaveFormat);
var sineChannel = new WaveChannel32(waveSine) { PadWithZeroes = false };

List<WaveChannel32> inputs = new List<WaveChannel32>();
inputs.Add(sineChannel);

var mixer = new MixingWaveProvider32(inputs);

var output = new WaveOut();
output.Init(mixer);
output.Play();
output.Volume = 0.5f;

while (true)
{
    Thread.Sleep(1000);
    waveSine.Beep(1000, 150);
}

var waveSine=新的蜂鸣音流(waveWhite.WaveFormat);
var sineChannel=新的WaveChannel32(waveSine){PadWithZeroes=false};
列表输入=新列表();
输入。添加(sineChannel);
var混频器=新的混合波提供器32(输入);
var输出=新的WaveOut();
输出初始化(混频器);
output.Play();
输出。体积=0.5f;
while(true)
{
睡眠(1000);
waveSine.Beep(1000150);
}
这是beep代码(它基本上输出0,但当调用beep时,它会推送缓存的正弦样本): (注1:非生产代码,因此请忽略明显的不一致) (注1:事实上至少有两个频道——一个总是在播放,这就是为什么我必须制作第二个频道——哔哔声频道——也总是在播放。我很乐意改为编写SamplesProviders,但找不到好的示例)

公共类BeepStream:WaveStream
...
公共重写整型读取(字节[]缓冲区、整型偏移量、整型计数)
{
int totalBytesRead=0;
int beepBytesRead=0;
while(totalBytesRead=playingNow.Length)
playingNow=null;
}
}
返回totalBytesRead;
}

观察-读数总是与计数52920一起出现。这个神奇的数字是什么?我可以减少吗?wave格式是float 44100,如果这有帮助的话。

只需尝试一切就可以找到解决方案

使用专用WASAPI输出:

var output = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Exclusive, 3);
output.Init(mixer);
output.Play();


通过简单的尝试找到解决方案

使用专用WASAPI输出:

var output = new WasapiOut(NAudio.CoreAudioApi.AudioClientShareMode.Exclusive, 3);
output.Init(mixer);
output.Play();