通过 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。就目前而言,它正在发送未压缩的数据,但有微小的间隙。
这个特殊的问题是,当尝试将 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。就目前而言,它正在发送未压缩的数据,但有微小的间隙。