通过 LAN 的现场音频网络馈送

Live Audio Network Feed via LAN

这个特殊的问题是,当尝试将 Loopback 音频从一台 PC 发送到另一台 PC 时,音频会缓冲并停顿几分之一秒;出现微卡顿。

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

服务器:

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

和客户:

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

我使用的代码非常简单,并且使用的是 Tcp,因为我在知道 Udp 是首选之前就把它放在一起了。

当前的结果是播放音频,但每隔半秒左右就会断断续续。

使用 UdpClient 的网络解决了微口吃问题,尽管它并没有完全解决口吃问题。这可以通过将音频作为编码的 Mp3 发送并对其进行解码来实现 client-side。就目前而言,它正在发送未压缩的数据,但有微小的间隙。