我正在开发一个应用程序,它通过自定义 UDP 协议从远程服务器接收音频样本流。该流由小样本序列组成,每个序列可能具有不同数量的通道和速率。
据我了解,流的 sample_spec 只能在流的创建过程中设置(pa_simple_new
,pa_stream_new
等),之后无法切换。
我的问题是:在 PulseAudio 中播放这些样本的最有效方法是什么?我看到三个选项:
- 保留单个 PulseAudio 流,在需要时手动重新采样样本序列和混合通道(以便为 PulseAudio 提供相同 sample_spec 的样本)
- 保留单个 PulseAudio 流,在规格更改时使用新的 sample_spec 关闭并重新打开它
- 保留多个流,一个用于我必须使用的每种样本
选项 1 似乎需要大量手动工作,而且也非常耗费资源。选项 2 似乎非常低效。选项 3 看起来可能是最好的,但我担心资源消耗。有什么我可能会丢失的吗?