通过LAN的​​实时音频网络馈送

问题描述

这个特殊的问题是,当尝试将回送音频从一台PC发送到另一台PC时,音频缓冲并停顿了不到一秒钟。会出现微小的结巴。

使用NAudio's ReadFullyStream中的示例发送的音频没有任何障碍,只有在处理时才会暂停一秒钟或两秒钟。

服务器:

private void Capture_DataAvailable(object sender,WaveInEventArgs e)
{
    stream.Write(e.Buffer,e.BytesRecorded);
}

和客户:

wave = new WaveOut()
{
    DesiredLatency = 500
};
wave.Init(buff); //BufferedWaveProvider
wave.Play();
while ((read = stream.Read(buffer,buffer.Length)) > 0)
{
    buff.AddSamples(buffer,read);
}

我正在使用的代码经过了简化,并且使用了Tcp,因为我在知道Udp是首选之前就将它们放在一起了。

当前结果是音频可以播放,但是每半秒左右会卡顿。

解决方法

使用UdpClient的网络解决了微小的卡顿现象,尽管它不能完全解决卡顿现象。这可以通过将音频作为编码的Mp3发送并在客户端进行解码来实现。就目前而言,它正在实时发送未压缩的数据,并且存在很小的差距。