日安,
我一直在与一位同事讨论有关ALSA与PulseAudio的一些细节,并需要一些帮助才能得出结论。据我所知,ALSA相对较低,直接与硬件对话,而PulseAudio作为一项服务坐在ALSA之上。
此外,据我理解,ALSA与Linux绑定在一起,但是PulseAudio只是充当ALSA之上的抽象层,并且可以在其他平台上工作。我的结论是,ALSA将在大多数Linux系统上提供更低的音频延迟,而我的同事则认为PulseAudio提供更好(更短)的延迟。
我们哪一个是对的?我的推理是,由于PulseAudio位于ALSA之上,甚至封装它,除非它自己提供低级别的调用,否则它不可能提供更好的延迟。
谢谢。
发布于 2015-03-25 10:05:36
ALSA (和许多其他声音API一样)为要播放的示例提供了一个环形缓冲区。
使用这个环形缓冲器最常见的方法是在任何时候都要填充它。这意味着,现在编写的示例只在缓冲区中的所有其他示例被播放之后才会播放,也就是说,延迟与缓冲区的大小成正比。(缓冲区大小可以由应用程序选择,但取决于硬件的能力,一旦选择就可以固定。)
PulseAudio能够只保留缓冲区的一部分。(这不是ALSA直接提供的特性,而是需要一个单独的计时器来监视播放过程。)因此,它可以提供比使用相同缓冲区大小的其他应用程序更低的延迟,但更重要的是,这允许它动态地调整延迟,而不必停止和重新配置设备。
其他应用程序也可以这样做,但是使用PulseAudio比再次实现缓冲区处理要容易得多。
https://stackoverflow.com/questions/29245583
复制相似问题