0
好吧,我目前正在尝试使用NAudio和c#制作语音聊天软件。获取总延迟 - UDP音频通信
但我目前有一个问题,延迟似乎打赌越来越糟,越长的应用程序运行。
现在,我是一个初学者,所以我不知道可能是什么原因。
但要排除故障,我想知道是否可以得到总延迟,看看它随着时间的推移会增加多少。
总延迟时间=输入缓冲区+网络延迟时间+输出缓冲区(如果有的话,我用的是UDP)。
所以,如果我有这样的:
Label.text = TotalLatency();
它会一直更新。
while (!bStop)
{
byte[] datanbefore = waveStream.GetBuffer();
autoResetEvent.WaitOne();
waveStream.Position = 0;
captureBuffer.Read(offset, waveStream, halfBuffer, LockFlag.None);
readFirstBufferPart = !readFirstBufferPart;
offset = readFirstBufferPart ? 0 : halfBuffer;
//TODO: Fix this ugly way of initializing differently.
//Mute Mic when button is checked
if (MuteMic.Checked)
{
waveStream = new MemoryStream(halfBuffer);
}
byte[] datanaudio = waveStream.GetBuffer();
udpClient.Send(datanaudio, datanaudio.Length, otherPartyIP.Address.ToString(), 5550);
}
所以这里是发送部分。我不确定缓冲是如何工作的,因为我使用免费的样本开始了应用程序,并且一直在不断改变它,但是有些部分仍然存在,但我认为缓冲区可以改进。
while (!bStop)
{
//Receive data.
byte[] byteData = udpClient.Receive(ref remoteEP);
waveProvider.AddSamples(byteData, 0, byteData.Length);
}
这里是接收部分,it's简单得多,它只是从UDP get's的数据,屁股缓冲和播放。
是啊,注意到,andi设置为4ms,那么我可以得到缓冲提供者(Buffer Duration),并将其添加到它。 – Zerowalker