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