如何知道我默认使用的是alsa还是Pulse-audio?(切换到i3-wm)


51

我可能没有理解核心概念,如果我错了,在这种情况下请纠正我。

Ubuntu带有两个不同的音频渲染服务器,pulse和alsa。Alsa是中介者吗?本质上,我需要知道我正在使用哪个。

我需要知道的原因是我正在尝试从统一切换到i3-wm。设置i3时,我发现我没有声音,遇到了这个线程。它指定了用于将笔记本电脑的音量上下键绑定到其功能的各种选项,并且在修改了一些选项后,我的音频非常scratch啪,这就是为什么(我假设)我需要知道实际使用的音频。

Answers:


82

Ubuntu同时使用ALSA和Pulseaudio来控制声音的输入和输出。

阿尔萨

ALSA用作基于内核的系统,可将您的声音硬件连接到操作系统。系统中的所有声卡将使用驱动程序和卡的特定设置进行控制。大多数操作是在后台进行的,不需要用户干预。

此外,ALSA还提供库和工具来控制我们的音响系统。我们大多数人可能遇到的工具可能是alsamixer,半图形终端应用程序,用于控制音量以及使系统中所有卡和配置文件的静音状态。

我们只需使用ALSA即可向声卡发出声音,而无需PulseAudio或任何其他声音服务器。

脉冲音频

在ALSA的基础上,PulseAudio声音服务器提供了更多工具来更好地控制我们的声音系统。这是通过定义音量级别,声卡配置文件,输出接收器或输入源等的模块完成的,还可以通过更多模块方便地从大多数Ubuntu应用程序访问。

像ALSA一样,PulseAudio也被设计为以尽可能少的用户交互运行。每当我们需要更改音量,平衡或输入/输出设备时,它就是我们或我们的应用程序调用的PulseAudio模块或应用程序。

JACK音频服务器是PulseAudio的专业替代产品,具有更多与我们的声音硬件进行交互的选项以及更好的低延迟支持。只有少数音乐制作应用程序期望运行JACK,可以与PulseAudio并行执行。

应用程序/桌面集成

可以从Unity / GNOME桌面上运行的应用程序(例如音量控制小程序)进一步控制Ubuntu声音系统。

任何给定的应用程序使用声音控制的地方将取决于应用程序开发人员。一些应用程序仅使用ALSA,一些应用程序需要PulseAudio,一些需要JACK。

因此,每当我们在Ubuntu之上安装另一个桌面管理器时,我们可能会丢失桌面特定的应用程序来控制声音,但ALSA和PulseAudio仍将在后台运行以进行声音控制。

我们可能必须安装其他软件包,例如pavucontrol 安装pavucontrol,这是基于pulseaudio GTK的音量控制应用程序。

是否运行了ALSA或PulseAudio?

ALSA和PulseAudio都带有命令行应用程序,以打印出声音系统的状态。

  • PulseAudio:

    pactl list
    
  • ALSA:

    aplay -l
    

如果声音系统未运行,则两者都会产生错误。ALSA将加载内核,PulseAudio将在以后启动。如果不是这种情况,我们可以使用以下命令从终端手动启动PulseAudio:

pulseaudio [options]  ## option -D starts the daemon

如果我们遇到音频问题,我建议阅读David Henningsson撰写的关于应该做的事情的文章,因为我们将进一步调试音频问题


1
@Takkat惊人的解释,非常感谢。我已经尝试了很长时间了,以便对Linux和Ubuntu中的音频系统有基本的了解。
AlexN '16

在我的树莓派系统中,“ pactl list”返回“ Connection拒绝”,但是“ pactl --server 127.0.0.1 list”有效。导出环境变量“ PULSE_SERVER = 127.0.0.1”可以使Pulseaudio客户端正确连接。有什么想法我想念的吗?这是在树莓派上。
Joao Costa
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.