有一致的 shell 命令来调节音量吗?

有一致的 shell 命令来调节音量吗?

我一直在尝试找到一个一致的 shell 命令来调整笔记本电脑上的音量。建议我尝试(静音/取消静音):

 pactl set-sink-mute 0 toggle

它不起作用,我收到错误

Failed to get sink information: No such entity

经过更多查看,我发现在命令中更改0为有效。1我认为这是因为 pactl 在启动时为我的声卡分配了一个编号,而当我重新启动笔记本电脑时该编号发生了变化。

这很好,但是当我重新启动笔记本电脑时,音频键不再起作用。我在 shell 中尝试了工作命令,并再次收到“没有这样的实体”错误。如果我改10(即原来的命令),它会再次起作用。

这让我很困惑,因为我认为我只有一张声​​卡。无论如何,如果分配给卡的号码不一致,是否有一致的方法来引用该卡并调整其音量?

答案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%

相关内容