来自网络的多个音频流的软件混合

问题描述

TLDR:当流可能不可靠时,我如何混合网络流?

我正在开展一个项目,该项目将允许音乐家以低延迟通过互联网一起练习/表演。 (想想 JackTrip 但对用户更友好)。

我通过网络通过 UDP 接收原始 PCM 音频数据。当这些进来时,我确定发送者是谁,并将该流通过管道传输到该特定人员的缓冲区中。我为每个参与的人准备了一个单独的缓冲区。

然后我会定期从每个缓冲区中一次取出一个“块”,将它们混合在一起并输出到设备的扬声器。

我遇到的问题是知道何时采取该“大块”。一些客户端离线并且它们的缓冲区运行为空。我不能等待他们的缓冲区重新填满,因为这会减慢其他客户的速度。

我的想法是查看特定时间点的所有缓冲区,并且仅在填充了至少一半缓冲区时才处理一个块。

有什么想法吗?

其他细节:

  • 我的缓冲区有 128 个样本。
  • 我使用的采样率为 44100
  • 我使用的是 16 位有符号整数 pcm
  • 流是单声道的
  • 我正在使用 PortAudio 和 C++。
  • 我正在使用 ASIO 音频驱动程序。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)