如何使用 amixer 切换声音?

如何使用 amixer 切换声音?

包括 Natty 在内,我总是能够使用

amixer sset Master toggle

我将其链接到 CompizConfig-Manager 中的边缘绑定的命令。

现在,安装 Oneiric 后,该命令只会静音,而不会取消静音。我甚至在终端中尝试过,但也没有用。它改变了'单声道:播放 68 [78%] [-14.25dB] [关闭]' 到 '...[on]' 但声音保持静音,所以我必须通过面板中的“声音指示器”取消静音。

我怎样才能让它再次工作?自 Natty 以来有什么变化?有人知道“声音指示器”用于切换音量的命令吗?

答案1

这对我 13.04 有效,静音和取消静音均有效:

amixer -D pulse set Master 1+ toggle

它指定脉冲音频以确保取消静音,取消所有内容的静音。

答案2

我正在使用这个脚本作为解决方法:

#!/bin/bash

CURRENT_STATE=`amixer get Master | egrep 'Playback.*?\[o' | egrep -o '\[o.+\]'`

if [[ $CURRENT_STATE == '[on]' ]]; then
    amixer set Master mute
else
    amixer set Master unmute
    amixer set Front unmute
    amixer set Headphone unmute
fi

amixer scontents我对调用之前和调用之后的差异进行了比较amixer set Master mute,并使用 GUI 取消了所有内容的静音,以找出需要取消静音的内容。


  1. 带有声音类型amixer scontents > ~/before(您将获得一个包含所有声道状态的文件)
  2. 然后切换音量amixer set Master toggle
  3. 使用以下方式创建第二个通道状态文件amixer scontents > ~/after
  4. 再次切换声音,amixer set Master toggle这样音量就会恢复到第一个切换命令之前的水平
  5. 使用以下方式创建第三个文件amixer scontents > ~/afterafter

现在您有三个文件告诉您哪些文件告诉您用于正常声音的声道的状态,哪些文件被静音amixer set Master toggle,哪些文件不会通过使用相同命令再次取消静音而再次打开。

您可以使用软件中心轻松比较文件并查看差异(静音后不会取消静音的频道)meld。启动它,打开三个文件,在滚动条上您可以看到文件之间的差异。使用找到的频道名称将它们添加到上述脚本中。

答案3

我无法正确切换静音。无论我使用 CLI 并输入 Amixer sset Master 切换还是按下 HP pavillion media 切换键,我都会得到相同的结果:如果声音已打开并正常工作,它将自动关闭主通道和 PCM 通道。然后,当我再次按下切换键(cli 或键)时,它始终会打开主通道,但 PCM 保持静音。对于我的设备(运行 Xubuntu Oneric 的 HP Pavilion DV6),这意味着即使打开了主通道,声音也会关闭。从 CLI 运行时 - 结果相同。如果使用 cli,我切换 PCM,它也会关闭主通道,并且不会再次将其打开,尽管它可以正确切换 PCM。

有效的脚本是:

#!/bin/bash
    if amixer -c 0 get Master | grep -q off
then
    amixer set Master unmute
    amixer set PCM unmute

else
    amixer set Master mute
fi

然后我使用 Xubuntu 键绑定(设置 > 设置管理器 > 键盘 > 应用程序快捷键)浏览到脚本(我将其命名为 sndfx.sh,并通过在 thunar 中右键单击并在权限下勾选使可执行文件将其设置为可执行文件)。然后我通过点击该键为其分配了 HP Pavilion 快捷键。现在,它可以正确切换 - 太棒了。希望这对其他人有所帮助。

和平

答案4

如果您想用 .lircrc 替换 amixer 以使遥控器与 lirc 配合使用,您可以尝试以下几行。确保已安装 xmacro。音量控制现在又可以正常工作了。

begin
        prog = irexec
        button = KEY_VOLUMEUP
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioRaiseVolume KeyStrRelease XF86AudioRaiseVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_VOLUMEDOWN
        repeat = 1
        delay = 2
        config = echo KeyStrPress XF86AudioLowerVolume KeyStrRelease XF86AudioLowerVolume | xmacroplay $DISPLAY
end
begin
        prog = irexec
        button = KEY_MUTE
        config = echo KeyStrPress XF86AudioMute KeyStrRelease XF86AudioMute | xmacroplay $DISPLAY
end

相关内容