我一直在尝试找到一个一致的 shell 命令来调整笔记本电脑上的音量。建议我尝试(静音/取消静音):
pactl set-sink-mute 0 toggle
它不起作用,我收到错误
Failed to get sink information: No such entity
经过更多查看,我发现在命令中更改0
为有效。1
我认为这是因为 pactl 在启动时为我的声卡分配了一个编号,而当我重新启动笔记本电脑时该编号发生了变化。
这很好,但是当我重新启动笔记本电脑时,音频键不再起作用。我在 shell 中尝试了工作命令,并再次收到“没有这样的实体”错误。如果我改1
回0
(即原来的命令),它会再次起作用。
这让我很困惑,因为我认为我只有一张声卡。无论如何,如果分配给卡的号码不一致,是否有一致的方法来引用该卡并调整其音量?
答案1
一台笔记本电脑可能只有一张声卡,但可以有多个 Pulseaudio 接收器用于音频播放。
要查看可用接收器的列表:
pactl list short sinks
接收器索引号是在引导期间分配的,并且接收器的顺序可以在引导之间改变。为了确保静音命令在正确的接收器上工作,请使用符号名称而不是索引号。
例如:
我的系统上的接收器列出为:
$ 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
该设备是RUNNING
要静音的设备:
symbolic name = alsa_output.pci-0000_00_1b.0.analog-stereo
因此,在该设备上切换静音状态的命令是:
$ pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo toggle
答案2
对我来说有助于重新启动音频驱动程序:
pulseaudio -k && sudo alsa force-reload
之后pact
...命令工作没有任何错误。
pactl -- set-sink-volume 0 125%
答案3
这两个对我有用:
1:使用xdotool
$ xdotool key XF86AudioLowerVolume #decrease volume
$ xdotool key XF86AudioRaiseVolume #increase volume
2:使用它来查看音频设备的索引:
$ pacmd list-sinks | grep -e 'name:' -e 'index:'
index: 1
name: <alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_5__sink>
index: 2
name: <alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_4__sink>
index: 3
name: <alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp_3__sink>
* index: 4
name: <alsa_output.pci-0000_00_1f.3-platform-skl_hda_dsp_generic.HiFi__hw_sofhdadsp__sink>
之前index: 4
有一个星号。这是我需要的设备:
$ pactl set-sink-volume 4 +10%
$ pactl set-sink-volume 4 -10%