通过 LAN 提供实时音频网络馈送
Posted
技术标签:
【中文标题】通过 LAN 提供实时音频网络馈送【英文标题】:Live Audio Network Feed via LAN 【发布时间】:2020-08-31 01:28:16 【问题描述】:这个特殊的问题是,当尝试将 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 是首选之前就将它放在一起。
当前的结果是音频播放,但每隔半秒左右就断断续续。
【问题讨论】:
那么,您是否尝试过在 TCP 实现之外播放原始音频数据? 我有。在同一台机器上运行程序的两个实例时,我可以听到正在播放的音频,只是听到的是环回馈送,因此它会在几秒钟后堆叠并变得有点脏。我会将音频录制到一个文件中以满足您的问题,并回听检查。 因此,在本地录制环回音频时,使用与读取 NetworkStream 相同的客户端方法,录制清晰且没有失真。 【参考方案1】:使用UdpClient
的网络解决了微口吃问题,尽管它并没有完全解决口吃问题。这可以通过将音频作为编码的 Mp3 发送并在客户端对其进行解码来实现。就目前而言,它正在实时发送未压缩的数据,并且存在微小的差距。
【讨论】:
以上是关于通过 LAN 提供实时音频网络馈送的主要内容,如果未能解决你的问题,请参考以下文章
是否可以直接向 Puppeteer 获取 Puppeteer 音频馈送和/或输入音频?