音频延迟与可靠性
Audio latency versus reliability
使用 WASAPI Windows 上的音频流在延迟和可靠性之间是否存在任何权衡?
也就是说,如果我正在编写一个 WASAPI 应用程序并且我想要最小的延迟,那么与我使用更高的延迟相比,音频流是否会受到更多的爆破声、咔哒声和音频干扰?使用可能的最低延迟是 "free lunch",还是带有警告的东西?
延迟是缓冲区大小的函数(例如 bufferSize/sampleRate
)。通过增加缓冲区大小,您可以减少 D/A 转换器在 OS 使您的应用程序有机会填充下一个缓冲区之前消耗当前样本缓冲区的可能性。缺点是延迟增加。延迟增加的影响是您在播放期间所做的更改(例如增加音量)在播放下一个缓冲区之前不会被听到。在极端情况下,您可以想象在您的应用程序和声卡之间有一个 1 个样本的缓冲区。您的延迟为零,但 Windows 调度程序无法定期为您提供足够的服务以防止辍学。
天下没有免费的午餐,但随着计算机不断加速,缓冲区不足的可能性已经大大降低。
使用 WASAPI Windows 上的音频流在延迟和可靠性之间是否存在任何权衡?
也就是说,如果我正在编写一个 WASAPI 应用程序并且我想要最小的延迟,那么与我使用更高的延迟相比,音频流是否会受到更多的爆破声、咔哒声和音频干扰?使用可能的最低延迟是 "free lunch",还是带有警告的东西?
延迟是缓冲区大小的函数(例如 bufferSize/sampleRate
)。通过增加缓冲区大小,您可以减少 D/A 转换器在 OS 使您的应用程序有机会填充下一个缓冲区之前消耗当前样本缓冲区的可能性。缺点是延迟增加。延迟增加的影响是您在播放期间所做的更改(例如增加音量)在播放下一个缓冲区之前不会被听到。在极端情况下,您可以想象在您的应用程序和声卡之间有一个 1 个样本的缓冲区。您的延迟为零,但 Windows 调度程序无法定期为您提供足够的服务以防止辍学。
天下没有免费的午餐,但随着计算机不断加速,缓冲区不足的可能性已经大大降低。