TLDR:当流可能不可靠时,我如何混合网络流?
我正在开展一个项目,该项目将允许音乐家以低延迟通过互联网一起练习/表演。 (想想 JackTrip 但对用户更友好)。
我通过网络通过 UDP 接收原始 PCM 音频数据。当这些进来时,我确定发送者是谁,并将该流通过管道传输到该特定人员的缓冲区中。我为每个参与的人准备了一个单独的缓冲区。
然后我会定期从每个缓冲区中一次取出一个“块”,将它们混合在一起并输出到设备的扬声器。
我遇到的问题是知道何时采取该“大块”。一些客户端离线并且它们的缓冲区运行为空。我不能等待他们的缓冲区重新填满,因为这会减慢其他客户的速度。
我的想法是查看特定时间点的所有缓冲区,并且仅在填充了至少一半缓冲区时才处理一个块。
有什么想法吗?
其他细节: