首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ALSA与PulseAudio -延迟问题

ALSA与PulseAudio -延迟问题
EN

Stack Overflow用户
提问于 2015-03-25 00:42:29
回答 1查看 6K关注 0票数 5

日安,

我一直在与一位同事讨论有关ALSA与PulseAudio的一些细节,并需要一些帮助才能得出结论。据我所知,ALSA相对较低,直接与硬件对话,而PulseAudio作为一项服务坐在ALSA之上。

此外,据我理解,ALSA与Linux绑定在一起,但是PulseAudio只是充当ALSA之上的抽象层,并且可以在其他平台上工作。我的结论是,ALSA将在大多数Linux系统上提供更低的音频延迟,而我的同事则认为PulseAudio提供更好(更短)的延迟。

我们哪一个是对的?我的推理是,由于PulseAudio位于ALSA之上,甚至封装它,除非它自己提供低级别的调用,否则它不可能提供更好的延迟。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-03-25 10:05:36

ALSA (和许多其他声音API一样)为要播放的示例提供了一个环形缓冲区。

使用这个环形缓冲器最常见的方法是在任何时候都要填充它。这意味着,现在编写的示例只在缓冲区中的所有其他示例被播放之后才会播放,也就是说,延迟与缓冲区的大小成正比。(缓冲区大小可以由应用程序选择,但取决于硬件的能力,一旦选择就可以固定。)

PulseAudio能够只保留缓冲区的一部分。(这不是ALSA直接提供的特性,而是需要一个单独的计时器来监视播放过程。)因此,它可以提供比使用相同缓冲区大小的其他应用程序更低的延迟,但更重要的是,这允许它动态地调整延迟,而不必停止和重新配置设备。

其他应用程序也可以这样做,但是使用PulseAudio比再次实现缓冲区处理要容易得多。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29245583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档