如何解决来自网络的多个音频流的软件混合
TLDR:当流可能不可靠时,我如何混合网络流?
我正在开展一个项目,该项目将允许音乐家以低延迟通过互联网一起练习/表演。 (想想 JackTrip 但对用户更友好)。
我通过网络通过 UDP 接收原始 PCM 音频数据。当这些进来时,我确定发送者是谁,并将该流通过管道传输到该特定人员的缓冲区中。我为每个参与的人准备了一个单独的缓冲区。
然后我会定期从每个缓冲区中一次取出一个“块”,将它们混合在一起并输出到设备的扬声器。
我遇到的问题是知道何时采取该“大块”。一些客户端离线并且它们的缓冲区运行为空。我不能等待他们的缓冲区重新填满,因为这会减慢其他客户的速度。
我的想法是查看特定时间点的所有缓冲区,并且仅在填充了至少一半缓冲区时才处理一个块。
有什么想法吗?
其他细节:
- 我的缓冲区有 128 个样本。
- 我使用的采样率为 44100
- 我使用的是 16 位有符号整数 pcm
- 流是单声道的
- 我正在使用 PortAudio 和 C++。
- 我正在使用 ASIO 音频驱动程序。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。