Answers:
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 ,这是基于pulseaudio GTK的音量控制应用程序。
ALSA和PulseAudio都带有命令行应用程序,以打印出声音系统的状态。
PulseAudio:
pactl list
ALSA:
aplay -l
如果声音系统未运行,则两者都会产生错误。ALSA将加载内核,PulseAudio将在以后启动。如果不是这种情况,我们可以使用以下命令从终端手动启动PulseAudio:
pulseaudio [options] ## option -D starts the daemon
如果我们遇到音频问题,我建议阅读David Henningsson撰写的关于不应该做的事情的文章,因为我们将进一步调试音频问题。