Clo*_*oud 2 linux audio alsa linux-device-driver pulseaudio
美好的一天,
我一直在与一位同事就ALSA与PulseAudio进行辩论,并需要一些帮助才能得出结论.据我所知,ALSA相对较低,直接与硬件对话,而PulseAudio作为服务位于ALSA之上.
另外,据我所知,ALSA与Linux有关,但PulseAudio只是作为ALSA之上的抽象层,可以在其他平台上运行.我的结论是ALSA会在大多数Linux系统上提供较低的音频延迟,而我的同事认为PulseAudio提供更好(更短)的延迟.
我们哪个是正确的?我的理由是,由于PulseAudio位于ALSA之上或甚至包裹它,除非它提供自己的低级别调用,否则它无法提供更好的延迟.
谢谢.
ALSA(与许多其他声音API一样)为要播放的样本提供环形缓冲区.
使用此环形缓冲区的最常用方法是始终保持填充状态.这意味着现在写入的样本仅在缓冲区中的所有其他样本都已播放后播放,即延迟与缓冲区的大小成比例.(缓冲区大小可以由应用程序选择,但取决于硬件的功能,并在选择后固定.)
PulseAudio只能保留缓冲区的一部分.(这不是ALSA直接提供的功能,但需要一个单独的计时器来监控播放进度.)因此,它可以提供比使用相同缓冲区大小的其他应用程序更低的延迟,但更重要的是,这允许它动态调整延迟无需停止和重新配置设备.
其他应用程序也可以这样做,但使用PulseAudio比再次实现缓冲区处理更容易.