我一直试图找到一个一致的 shell 命令来调整我的笔记本电脑的音量。我被推荐尝试(用于静音/取消静音):
pactl set-sink-mute 0 toggle
Run Code Online (Sandbox Code Playgroud)
它没有用,我收到了错误
Failed to get sink information: No such entity
Run Code Online (Sandbox Code Playgroud)
多看几眼后,我发现在命令中更改0
为1
有效。我认为这是因为 pactl 在启动时为我的声卡分配了一个编号,而当我重新启动笔记本电脑时,该编号发生了变化。
那很好,但是当我重新启动笔记本电脑时,音频键不再起作用。我在 shell 中尝试了工作命令并再次收到“没有这样的实体”错误。如果我改1
回0
(即原始命令),它会再次工作。
这让我很困惑,因为我认为我只有一张声卡。无论如何,如果分配给卡的编号不一致,是否有一致的方法来引用该卡并调整其音量?
nik*_*mic 12
一台笔记本电脑可能只有一张声卡,但可以有多个 Pulseaudio 接收器用于音频播放。
要查看可用接收器列表:
pactl list short sinks
Run Code Online (Sandbox Code Playgroud)
在引导期间分配接收器索引号,并且接收器的顺序可以在引导之间改变。为了确保静音命令在正确的接收器上工作,请使用符号名称而不是索引号。
例如:
我系统上的接收器列为:
$ pactl list short sinks
0 alsa_output.pci-0000_00_1b.0.analog-stereo module-alsa-card.c s16le 2ch 44100Hz RUNNING
1 alsa_output.pci-0000_01_00.1.hdmi-stereo-extra1 module-alsa-card.c s16le 2ch 44100Hz SUSPENDED
Run Code Online (Sandbox Code Playgroud)
即该装置RUNNING
是要被静音的一个:
symbolic name = alsa_output.pci-0000_00_1b.0.analog-stereo
Run Code Online (Sandbox Code Playgroud)
所以在该设备上切换静音状态的命令是:
$ pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo toggle
Run Code Online (Sandbox Code Playgroud)