我可能没有理解核心概念,如果我错了,请纠正我。
Ubuntu 附带两个不同的音频渲染服务器,pulse 和 alsa。Alsa 是 pulse 的中间层吗?本质上我需要知道我正在使用哪一个。
我需要知道的原因是,我正尝试从 unity 切换到 i3-wm。在设置 i3 时,我发现没有音频,然后遇到了此主题。它指定了将我的笔记本电脑音量调高和调低键与其功能绑定的各种选项,在我摆弄了几个选项之后,我得到了非常刺耳的音频,这就是为什么(我假设)我需要知道我实际在使用哪一个。
答案1
Ubuntu 使用 ALSA 和 PulseAudio 来控制声音输入和输出。
阿尔萨斯大学
ALSA 是一个基于内核的系统,用于将您的声音硬件连接到操作系统。系统中的所有声卡都将使用驱动程序和卡特定设置进行控制。大部分操作都是在后台完成的,无需用户干预。
此外,ALSA 还提供库和工具来控制我们的音响系统。我们大多数人可能遇到的工具是alsamixer
,这是一个半图形终端应用程序,用于控制系统中所有卡和配置文件的音量和静音状态。
我们可以简单地使用 ALSA 向我们的声卡发出声音,而无需 PulseAudio 或任何其他声音服务器。
脉冲音频
在 ALSA 基础上,PulseAudio 声音服务器提供了更多工具来更好地控制我们的音响系统。这是通过模块来实现的,这些模块可以定义音量级别、声卡配置文件、输出接收器或输入源等,以便从大多数 Ubuntu 应用程序轻松访问。
与 ALSA 一样,PulseAudio 的设计也尽可能减少用户交互。每当我们需要更改音量、平衡或输入/输出设备时,我们或我们的应用程序都会调用 PulseAudio 模块或应用程序。
PulseAudio 的专业替代品是JACK音频服务器,具有更多与声音硬件交互的选项和更好的低延迟支持。只有少数音乐制作应用程序需要运行 JACK,这可以与 PulseAudio 并行完成。
应用程序/桌面集成
Ubuntu 音响系统还可以通过从 Unity/GNOME 桌面运行的应用程序(例如音量控制小程序)进行控制。
任何特定应用程序是否使用声音控制将由应用程序开发人员决定。有些应用程序只使用 ALSA,有些需要 PulseAudio,有些需要 JACK。
因此,每当我们在 Ubuntu 上安装另一个桌面管理器时,我们可能会失去控制声音的特定于桌面的应用程序,但是 ALSA 和 PulseAudio 仍会在后台运行以进行声音控制。
我们可能需要安装其他软件包,例如pavucontrol
,基于 GTK 的 pulseaudio 音量控制应用程序。
ALSA 或 PulseAudio 是否正在运行?
ALSA 和 PulseAudio 都带有命令行应用程序来打印出我们的音响系统的状态。
脉冲音频:
pactl list
ALSA:
aplay -l
如果声音系统未运行,则两者都会出错。ALSA 将随内核一起加载,PulseAudio 稍后将启动。如果不是这种情况,我们可以从终端手动启动 PulseAudio:
pulseaudio [options] ## option -D starts the daemon
如果我们遇到音频问题,我建议阅读David Henningsson 撰写的关于我们应该做的事情的文章不是做在我们进一步讨论之前调试我们的音频问题。