我在谷歌上搜索声音在 Linux 中的工作原理几天了,但仍然找不到一篇好的、基本的文章或教程。我实际上正在寻找的是确实存在哪些术语以及我可以使用哪些工具(用于创建 bash 脚本的终端工具)来配置声音。我正在寻找类似的东西:
- 什么是声卡?
- 什么是渠道?
- 我有什么工具?
- 可以做什么修改来输出声音?
- ...
答案1
声卡是一种卡(有时比芯片大一点),用于从音频插孔或其他输入标准接收和发送信号,用于将音频输入和输出设备连接到计算机,集成声卡使用 CPU 处理来自输入的信号在将它们转发到录制它们的软件之前,以及在将它们转发到扬声器之前处理计算机的声音输出。
专用声卡通常有其自己的专用声音处理单元,并且不必依赖于 CPU。
通道,至少在 Linux 声音驱动程序中是指您所针对的特定扬声器(例如 5.1 扬声器有 6 个通道,每个扬声器 1 个,低音炮 1 个,为了理解这一点,假设您有一个 5.1 扬声器设置,使用命令扬声器测试-c6 -t wav它会为您读取所有将声音输出到各自通道的扬声器,一次一个)您几乎不需要对此了解太多,除非您手动配置立体声或 2.1 扬声器以外的任何东西。
你拥有什么工具很大程度上取决于发行版,你标记了 alsa,所以 alsa 的工具(如果你安装了它们,如果你没有安装它们,那么你的发行版软件存储库中一定会有一个包)你将有权访问命令如混合器,阿普拉,说话者测试和阿尔萨混合器(老实说,这些是我使用过的唯一的)您可能还有一个图形混音器,但这在桌面环境和发行版之间有很大不同。如果您也使用pulseaudio,事情也会变得更加复杂。 Pulseaudio 始终运行在像 alsa 这样的内核声音驱动程序之上,它不能单独工作。
还有 alsa 的替代品(主要是 OSS/开放声音软件),我不会对此进行任何详细介绍。
配置 alsa 的主要文件有 3 个。有一个系统范围的 alsa 配置文件,通常/etc/asound.conf,每个用户的安装文件位于每个用户的主目录中,如下所示〜/.asoundrc(这些文件默认情况下不存在,尽管 asound.conf 可能存在的唯一目的是重定向 alsa 以使用pulseaudio(如果您使用pulseaudio))第三个文件是内核modprobe 文件,通常位于/etc/modprobe.d/它可以命名为任何你想要的名称,alsa.conf 是我通常使用的。在这里,您可以执行重要任务,将已安装但不打算使用的设备的音频驱动程序列入黑名单(最好消除此类驱动程序,以最大程度地减少默认设备选择过程中出现错误的可能性),并设置alsa 使用名为 index 的命令读取声音设备的顺序(index=0 将成为默认设备,index=1 将在其后排序,等等),它偶尔也可用于启用选项对于这些正常运行所需的声音设备(常见于笔记本电脑,尤其是配备时髦 2.1 音响系统的笔记本电脑)
还有一个usr/share/alsa/alsa.conf文件(或类似的东西),但我从来没有使用过它。
您用来配置 alsa 的主要配置文件可能是您的用户绑定文件.asoundrc,这是用户最常做的事情。
至于你可以做什么修改......你可以从应用均衡器到升级声音(所以如果你有更多的话,2声道声音将输出到你的所有扬声器)并更改默认输出设备,你还可以创建新的音频使用不同的配置或不同的声音设备进行输出,然后您可以配置特定的程序以根据需要使用(请记住,pulseaudio 的主要目标之一是自动化大部分操作)。您最可能使用最多的工具是阿尔萨混合器(用于控制音量的命令行混音器,它还支持配置每个通道的音量)
我使用我的 asoundrc 来做所有这些事情,但如果你有pulseaudio,你可能最好只使用给定的 GUI 配置工具(例如 pavucontrol)或如果可能的话完全卸载它。 Pulseaudio 会给您的声音(输出和输入)增加相当大的延迟,并且可能会导致某些程序出现问题(对我来说最值得注意的是当我尝试使用 ffmpeg 进行截屏时)
Pulseaudio 和 OSS 都不属于我的专业领域,我都不用。比“你可以对 alsa 驱动程序进行哪些修改”更大的问题是“你希望进行哪些修改”,通常有一种方法可以做到这一点(无论是否迂回),ALSA 是非常可配置的。 ALSA本身是内核的一部分,本质上是声卡驱动程序接口和编译,除非你有一个发行版专门想要使用除alsa之外的其他东西,你有alsa,但如果你安装了pulseaudio,你不应该尝试配置直接使用 alsa(使用pulseaudio 与其交互),您可以通过谷歌搜索轻松找到有关pulseaudio 的信息。
另外,为了将来参考,我建议寻找拱门维基当您寻找这样的答案时,它是有关各种 Linux 软件信息的公认来源。
最后一件有趣的事情,有一个称为 dmixing 的小功能,我不会详细解释它,但它的作用是允许您从多个来源输出声音(即您通常无法播放两个)如果没有这个,在 Linux 中就会立即发出声音)默认情况下,pulseaudio 中对任何和所有设备都会启用此功能,这也是pulseaudio 最初被制作的原因之一。但对于 alsa 来说,默认情况下仅对立体声设备启用 dmixing,这意味着如果您的声音配置使用超过 2 个通道,则您将必须手动应用 dmixing,如果您想知道如何操作,请给我发评论这。
脉冲音频有一个替代声音服务器软件,称为 JACK。如果您想知道的话,它没有pulseaudio 的延迟问题。但我从未使用过它(我自己倾向于使用纯alsa,这是最适合我的)
你的问题有点宽泛,但我尽力回答了。任何问题?