如何使用amixer切换声音?

包括Natty我总是能够用’切换(静音/取消静音)’Master’音量

amixer sset Master toggle

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

现在安装Oneiric后,该命令只会使声音静音但不会取消静音。 我甚至在终端尝试过但它也不起作用。 它将’ Mono:Playback 68 [78%] [-14.25dB] [off] ‘更改为’… [on]’,但声音保持静音,因此我必须通过声音指示器取消静音。面板。

我怎样才能再次使用它? 自Natty以来发生了什么变化? 有没有人知道’声音指示器’用于切换音量的命令?

这在13.04适用于我,无论是静音还是非静音:

 amixer -D pulse set Master 1+ toggle 

它指定脉冲音频以确保取消静音,取消静音。

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

 #!/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 set Master mute之后,我调用了amixer scontents然后调用它并使用GUI取消所有内容以找出需要取消静音的内容。


  1. 声音类型amixer scontents > ~/before (你将获得一个具有所有声音通道状态的文件)
  2. 然后使用amixer set Master toggle切换音量
  3. 使用amixer scontents > ~/after创建第二个chanel状态文件
  4. 使用amixer set Master toggle再次切换声音, amixer set Master toggle应该将音量调回到第一个切换命令之前的音量
  5. 使用amixer scontents > ~/afterafter创建第三个文件

现在你有三个文件告诉你哪个用于正常声音的声音amixer set Master toggle的状态,它们被amixer set Master toggle静音,并且再次使用相同的命令取消静音不再打开。

为了方便地比较文件并查看差异(之后得到静音但不会取消静音的chanel),您可以使用软件中心的meld 。 启动它,打开三个文件,在滚动条上,您可以看到文件之间存在差异的位置。 使用找到的chanel名称将它们添加到上述脚本中。

我无法让声音静音以正确切换。 无论我使用CLI并输入Amixer sset Master切换或点击HP pavillion媒体切换键,我都得到相同的结果:如果声音打开并正常工作,它将自动关闭主通道和PCM通道。 然后,当我再次按下切换按钮(cli或键)时,它总是打开Master,但保持PCM静音。 对于我的装备(HP Pavilion DV6运行Xubuntu Oneric),这意味着即使打开主机也会关闭声音。 从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并在权限下勾选make可执行文件将其设置为可执行文件)。 然后我通过点击该键为其分配了HP Pavilion快捷键。 现在,它正确切换 – 太棒了。 希望这有助于其他人。

和平

如果我没有弄错的话,这是一个导致其他混音器通道静音和取消静音的错误。 要静音,试试吧

amixer设为Master 0;

要取消静音尝试

amixer设为Master 1%+; amixer设为Master 7dB +;

试试这个脚本片段……它有效

https://wiki.archlinux.org/index.php/PulseAudio#volume_control

如果要在.lircrc中替换使用lirc的远程控制中的amixer,可以尝试以下行。 一定要安装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 

诀窍是让扬声器或耳机状态遵循主通道的状态,具体取决于您是否插入了耳机。 这个脚本是在我古老的戴尔Latitude笔记本电脑上为我做的:

 #!/bin/bash amixer -q sset Master toggle MASTER_STATE=`amixer get Master | awk -F"dB] " 'NR == 5 {print $2;}'` HEADPHONES_PLUGGED=`amixer contents | grep -A 2 Headphone\ Jack | awk -F"=" 'NR == 3 {print $2;}'` if [[ $HEADPHONES_PLUGGED == 'on' ]]; then SLAVE="Headphone" else SLAVE="Speaker+LO" fi if [[ $MASTER_STATE == '[on]' ]]; then amixer -q sset $SLAVE unmute else amixer -q sset $SLAVE mute fi 

您可能需要在计算机上使用amixer检查频道,并相应地更改SLAVE定义。 此外,HEADPHONES_PLUGGED定义中的“Headphone \ Jack”grep字符串可能需要是其他内容。

蛮力取消静音:

 for i in $(amixer |grep -o \'.*\'); do amixer set $i unmute; done