静音键使Alsa和PulseAudio静音,但仅取消Alsa的静音


20

当我按下键盘上的静音键时,Alsa主通道和PulseAudio主通道均被静音,再次按下仅取消alsa主通道的静音,pulseaudio主通道保持静音。结果:没有声音。我该如何解决?

Answers:


11

运行以下命令:

amixer -D pulse set Master 1+ unmute

12
您能解释一下此命令使其他用户知道什么吗?
恢复莫妮卡-ζ-2012年

1
1+代表什么?我在搅拌机的手册页中找不到解释。
jarno 2015年

如果要将命令绑定到硬件密钥,则使用切换而不是取消静音很有用amixer -D pulse set Master 1+ toggle
Pol Alvarez Vecino

20

不过要简单得多。

amixer -D pulse set Master Playback Switch toggle

将其设置为“静音\取消静音”的热键。音量控制可以保持原样。

薄荷15伴侣-我自己弄清楚,对我来说效果很好。


不管它是什么-在arch linux上都运行良好。静音和取消静音的声音成功。现在,我将此命令绑定到笔记本电脑上的Mutate命令上,因为默认情况下不会取消静音所有通道。谢谢
Erikas 2014年

这在Ubuntu 14.04 + i3上对我有用,接受的答案不起作用。
IngoBürk'14

1
amixer -D pulse set Master toggle会做。Amixer期望set或sset命令使用一个简单的混音器控件名称,即使它接受了完整的混音器控件名称,您也必须引用这种多字名称。您可以playback在命令中使用可选修饰符,如下所示:amixer -D pulse set Master playback toggle,但是,如果Master它也没有捕获功能,则没有必要。如果系统具有环绕声功能,则通过使用可选的修饰符,您还可以控制命令适用于哪些声道。
jarno 2015年

5

我在Linux Mint Debian Edition(201204)上运行MATE桌面时遇到了同样的问题。

“提高音量”操作无法取消静音。我意识到问题出在Pulseaudio上,但该软件包mate-media-gstreamer及其mate-settings-daemon-gstreamer默认安装位置。通过安装mate-media-pulsemate-settings-daemon-pulse(即已卸载的mate-media-gstreamermate-settings-daemon-gstreamer)和tadam ...“提高音量”操作能够再次取消静音!

希望这对您也有用!


为我工作(在Debian Jessie上),该解决方案是永久性的,而涉及的AFAIU解决方案amixer -D pulse set Master xxx只是一枪,或者需要手动映射到快捷方式。这里提出的解决方案看起来像它的原意。
杰罗姆

2

脉冲音频存在问题,用于alsa或混音器的命令将无法正确发送未静音的脉冲。当alsa命令发送静音信号时,它是一个切换命令(发送相同命令以静音/取消静音)。

现在,在pulseaudio中,它们具有单独的静音和取消静音代码!许多人报告说,卸载pulseaudio可以解决问题,但是对于某些人来说,这实际上不是一个可以接受的答案(像我一样,因为pulse对许多应用程序都有用)。

因此,要解决此问题,我们需要编写一个脚本,

1-在文本编辑器(如gedit或鼠标垫)中制作一个新的空文档,

2-将此代码粘贴到文档中,代码来源:2

#!/bin/bash
#### Create ~/.pulse/mute if not exists
ls ~/.pulse/mute &> /dev/null
if [[ $? != 0 ]]
then
    echo "false" > ~/.pulse/mute
fi

####Create ~/.pulse/volume if not exists
ls ~/.pulse/volume &> /dev/null
if [[ $? != 0 ]]
then
    echo "65536" > ~/.pulse/volume
fi

CURVOL=`cat ~/.pulse/volume`     #Reads in the current volume
MUTE=`cat ~/.pulse/mute`          #Reads mute state

if [[ $1 == "increase" ]]
then
    CURVOL=$(($CURVOL + 3277)) #3277 is 5% of the total volume, you can change this to suit your needs.
    if [[ $CURVOL -ge 65536 ]]
    then
        CURVOL=65536        
    fi
elif [[ $1 == "decrease" ]]
then
    CURVOL=$(($CURVOL - 3277))
    if [[ $CURVOL -le 0 ]]
    then
        CURVOL=0        
    fi
elif [[ $1 == "mute" ]]
then
    if [[ $MUTE == "false" ]]
    then
        pactl set-sink-mute 0 1
        echo "true" > ~/.pulse/mute
    exit    
    else
        pactl set-sink-mute 0 0
        echo "false" > ~/.pulse/mute    
    exit
    fi
fi

pactl set-sink-volume 0 $CURVOL
echo $CURVOL > ~/.pulse/volume # Write the new volume to disk to be read the next time the script is run.

3-将文件命名为“ volume”(无需扩展名),将其放在您可以找到的位置,并且不会像主文件夹一样将其删除

4-右键单击文件,将其设置为可执行文件,依次单击“属性”,“权限”选项卡,然后使用复选框将其标记为可执行文件,这将允许脚本运行。将文件标记为可执行GUI

5-接下来,我们需要将命令链接到键盘,代码的命令为增加,减少和静音。

因此,请转到键盘设置- 如何在键盘快捷方式区域中更改键盘上的快捷方式,单击添加,然后打开,打开我们创建的“卷”文件,然后添加命令音量,读取音量增加音量静音后的代码。但是带有代码文件之前的位置,例如“ / home / username / volume Mutet”

然后通过按键盘上的键将其分配给键盘,或者如果已经使用了该键,则
很可能是找到它们并替换命令。

快捷键可能称为XF86AudioRaiseVolume,XF86AudioLowerVolume,XF86AudioMute。由于只有静音被打破,因此您将首先集中精力进行更改。

错误:1


我只是XF86AudioMute映射到命令amixer set Master toggle。升高和降低vol键的映射方式与amixer命令相似。
Chan-Ho Suh 2012年

@ Chan-HoSuh你有同样的问题吗?您可以根据需要仅调用此脚本的Mutute命令,由于某种原因,pulse会在我的机器上拦截静音,所以混音器会发送一个切换开关,这被解释为只是逐个静音,还是拦截了按键?我使用的是类似的脚本:(之前表现出了音量条,但这种静音和取消静音,并且他们现在有通知,所以这一切都很好,切换是它是怎么之前成立。

脚本的一个小改进是也可以在音量增加/减少时强制取消静音。我还添加了“ paplay /usr/share/sounds/ubuntu/stereo/message.ogg”以获取有关音量的反馈。
dma 2014年

也许以前有所不同,但是使用Pulseaudio 4.0,您可以分别使用pactl set-sink-volume 0 +5%pactl set-sink-volume 0 -5%和等命令pactl set-sink-mute 0 toggle来增大音量,减小音量和切换音量。
jarno 2015年

@jarno是的,这是为了解决一个特定的问题(错误),因此它很可能已修复/不相关,但如果没有其他效果,它仍然是一个不错的小技巧
Mateo 2015年


1

在12.10上为我工作:

    #!/bin/sh
    amixer -c 0 sset Master,0 mute
    sleep 5
    amixer -D pulse set Master 1+ unmute

1

对于KDE和kmix用户,如果使用此脚本,您仍将获得视觉反馈:

#! /bin/bash

DBUS=qdbus 2> /dev/null

case "$1" in
  volup)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/increase_volume com.trolltech.Qt.QAction.trigger
        ;;
  voldn)
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo 0
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/decrease_volume com.trolltech.Qt.QAction.trigger
        ;;
  mute)
        ${DBUS} org.kde.kmix /kmix/KMixWindow/actions/mute com.trolltech.Qt.QAction.trigger
        pactl set-sink-mute alsa_output.pci-0000_00_1b.0.analog-stereo $(${DBUS} org.kde.kmix /Mixers/0/Master_0 org.kde.KMix.Control.mute | sed 's/false/0/g;s/true/1/g')
        ;;
  *)
    echo "Usage: mixctl <volup|voldn|mute>" >&2
    exit 1
    ;;
esac

exit 0

用法:

1)将其另存为〜/ bin / mixctl
2)取消映射默认的kmix键盘快捷键以提高音量/降低音量并静音
3)创建三个新的自定义键盘快捷键,分别为“提高音量”,“降低音量”和“静音”
- >快捷类型:命令
- >作为命令使用〜/斌/ mixctl VOLUP/ mixctl voldn〜/ bin中〜/斌/ mixctl静音分别


1

在升级到XFCE 4.10的多台Xubuntu 12.04计算机上,我遇到了同样的问题。这是从命令行(或使用bash脚本)解决此问题的快速方法。

与以前提供权宜之计脚本的解决方案不同,此解决方案可完全恢复静音/取消静音按钮的功能。

只需一次发出以下两个命令,即可彻底解决问题:

$ xfconf-query --channel xfce4-mixer --property /active-card --set PlaybackInternalAudioAnalogStereoPulseAudioMixer --reset
$ xfconf-query --create --channel xfce4-keyboard-shortcuts --property /commands/custom/XF86AudioMute --type string --set 'amixer -D pulse set Master 1+ toggle'

1

我在这个论坛上找到了一个对我来说很有效的简单解决方案。详细来说,您需要将此添加到/etc/asound.conf

pcm.pulse {
    type pulse
}
ctl.pulse {
    type pulse
}
pcm.!default {
    type pulse
}
ctl.!default {
    type pulse
}

然后使用以下命令为静音键设置键盘快捷键:

amixer set Master toggle

0

您可以使用键盘设置来设置静音按钮,以执行此处找到的命令。虽然这个环节上列出的第一种方法对我来说是没有用的,第二个用于XFCE4的伟大工程:$ pactl set-sink-mute 0 toggle。您还可以创建脚本或启动器,以在单击鼠标时执行命令。

仅供参考,如果您使用的是Cinnamon(以及可能还有其他基于gnome的台式机),则上面的建议似乎更好,因为肉桂的声音小应用程序会识别出音量已静音:(amixer -D pulse set Master Playback Switch toggle如果您喜欢此后一个命令,请对其回答进行投票,不是我的。)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.