虽然尝试让我的声音发挥作用,我想知道 ALSA 和 PulseAudio 的作用。我都安装了,我想知道,例如,它们中的哪一个需要知道我的声卡。
两者似乎可以互相使用,ALSA 有一个 pulseaudio 插件,在我的系统上,alsa 在 pulseaudio 中显示为声卡。
两者各起什么作用,是替代品还是互补品?
答案1
ALSA 是内核级混音器,它直接管理声卡。ALSA 本身一次只能处理一个应用程序。当然,还有'混合',它是为了解决这个问题而编写的。(它是一个 ALSA 模块。)
PulseAudio 是一款软件混音器,位于用户空间之上(就像您运行应用程序一样)。运行时,它使用 Alsa(无需 dmix),并自行管理各种混音、设备、网络设备等一切。
在 2014 年,您仍然只能运行 ALSA。但除非您自己编译应用程序并在所有地方启用 ALSA 支持 - 或者使用 Gentoo 等基于源代码的发行版 - 否则您可能会遇到混音问题。发行版发布的预编译应用程序通常仅支持 Pulseaudio,而不是纯 ALSA。例如,Ubuntu 更喜欢 PulseAudio。它默认带有 PulseAudio,因此每个应用程序都编译为仅使用 PulseAudio。
PulseAudio 确实有其优势。人们说它非常适合处理网络上的音频,并且解决了纯 ALSA 下出现的多声道音频流的一些问题。据说它还更容易为 PA 开发应用程序。在最终用户方面,可以轻松选择新设备、通过应用程序控制音量等。
然而,在默认配置下,它会增加相当多的延迟。这对于某些需要低延迟的任务(例如某些游戏和软件)来说是一个很大的缺点。
OSS 是这两者的一个替代品,但它未获得 GPL 许可,因此不太可能被大量发行版采用。
插图:
典型的 PulseAudio 音响系统,例如 Ubuntu:
- 内核:ALSA -> 用户空间:PulseAudio -> app1、app2、app3
- 在典型的 Linux 系统中,PulseAudio 会混合来自所有不同应用程序的音频,并将它们通过链传送至 ALSA。
ALSA:
- 内核:ALSA -> dmix -> 用户空间:app1、app2、app3
- 如果只使用纯 ALSA,则需要 dmix 来混合多个应用程序。如果没有它,ALSA 一次只能播放一个应用程序中的音频流。
开源软件:
- 内核:OSS -> 用户空间:app1、app2、app3
- 通过 OSS,用户空间应用程序可以直接与内核中的 OSS 对话,而 OSS 本身会混合流。
总而言之,在您目前的典型系统中,ALSA 直接与您的声卡对话,而 Pulseaudio 与您的应用和程序对话并将其输入到 ALSA。
答案2
ALSA
会谈正确的到声卡,只能处理 1 个应用程序。
然而Pulseaudio
安装后,1 个应用程序这ALSA
就是处理,pulseaudio 需要的音频数据全部应用程序和然后供稿那到ALSA
以下是流程:
ALSA:
用户空间:app1,(app2,app3)-> ALSA -> SoundCARD。
app2 和 app3 之所以出现()
是因为 ALSA 没有处理它们。
脉冲音频:
用户空间:app1、app2、app3 -> PulseAudio -> ALSA -> SoundCARD。
然而,OSS 有所不同。
开源软件:
用户空间 -> 内核 -> OSS -> 声卡
OSS 自行进行混合。
希望它能回答这个问题!