ปุ่มปิดเสียงปิดเสียง Alsa และ PulseAudio แต่เปิดเสียงปิดเสียง Alsa เท่านั้น


20

เมื่อฉันกดปุ่มปิดเสียงบนแป้นพิมพ์ของฉันทั้งช่องสัญญาณหลักของ Alsa และช่องสัญญาณหลักของ PulseAudio จะถูกปิดเสียงการกดอีกครั้งจะเป็นการเปิดเสียงช่องสัญญาณหลักของ Alsa เท่านั้นช่องสัญญาณหลักของ pulseaudio จะปิดเสียงอยู่ ผลลัพธ์: ไม่มีเสียง ฉันจะแก้ไขได้อย่างไร

คำตอบ:


11

เรียกใช้คำสั่งนี้:

amixer -D pulse set Master 1+ unmute

12
คุณช่วยอธิบายว่าคำสั่งนี้ทำอะไรเพื่อให้ผู้ใช้รายอื่นรู้
Reinstate Monica - ζ--

1
1+ มีไว้เพื่ออะไร ฉันไม่พบคำอธิบายใน man page ของ amixer
jarno

การใช้ toggle แทน unmute จะมีประโยชน์ถ้าคุณเชื่อมคำสั่งกับรหัสฮาร์ดแวร์amixer -D pulse set Master 1+ toggle
Pol Alvarez Vecino

20

มันง่ายกว่ามาก

amixer -D pulse set Master Playback Switch toggle

ตั้งค่านี้เป็นปุ่มลัดเพื่อ "ปิดเสียง \ เงียบเสียง" สามารถควบคุมระดับเสียงได้เหมือนที่เคยเป็น

Mint 15 Mate - คิดออกเองทำงานได้ดีสำหรับฉัน


ไม่ว่ามันจะเป็นอะไร - ทำงานได้ดีบน arch linux ปิดเสียงและยกเลิกการปิดเสียงเรียบร้อยแล้ว ตอนนี้ฉันผูกคำสั่งนี้กับคำสั่งปิดเสียงในแล็ปท็อปของฉันเพราะค่าเริ่มต้นไม่ได้เปิดเสียงช่องทั้งหมด ขอบคุณ
Erikas

สิ่งนี้ใช้ได้กับฉันกับ Ubuntu 14.04 + i3 คำตอบที่ยอมรับไม่ได้
Ingo Bürk

1
amixer -D pulse set Master toggleจะทำ. Amixer คาดว่าชื่อตัวควบคุมการผสมอย่างง่ายสำหรับคำสั่ง set หรือ sset และแม้ว่ามันจะยอมรับชื่อตัวควบคุมการผสมแบบสมบูรณ์คุณจะต้องอ้างชื่อแบบหลายคำเช่นนั้น คุณอาจใช้ตัวปรับเปลี่ยนเสริมplaybackในคำสั่งเช่นนี้: amixer -D pulse set Master playback toggleแต่ไม่จำเป็นหากMasterไม่มีความสามารถในการดักจับเช่นกัน คุณสามารถควบคุมช่องทางที่ใช้คำสั่งได้หากระบบของคุณสามารถใช้เสียงรอบทิศทางได้
jarno

5

ฉันมีปัญหาเดียวกันในการใช้เดสก์ท็อป MATE บน Linux Mint Debian Edition (201204)

การกระทำ "เพิ่มระดับเสียง" ไม่สามารถเปิดเสียงได้ ฉันรู้ว่าปัญหาเกิดขึ้นกับ Pulseaudio แต่แพคเกจmate-media-gstreamerและmate-settings-daemon-gstreamerตำแหน่งที่ติดตั้งเป็นค่าเริ่มต้น ด้วยการติดตั้งmate-media-pulseและmate-settings-daemon-pulse(ที่ถอนการติดตั้งmate-media-gstreamerและmate-settings-daemon-gstreamer) และ tadam ... การกระทำ "เพิ่มระดับเสียง" ก็สามารถเปิดเสียงได้อีกครั้ง!

ฉันหวังว่านี่จะใช้งานได้สำหรับคุณ!


ใช้งานได้สำหรับฉัน (บน Debian Jessie) และโซลูชันนี้เป็นแบบถาวรในขณะที่โซลูชัน AFAIU ที่เกี่ยวข้องamixer -D pulse set Master xxxเป็นภาพเดียวหรือจำเป็นต้องแมปด้วยตนเองกับทางลัด โซลูชันที่นำเสนอที่นี่มีลักษณะเหมือนที่ตั้งใจไว้
Jérôme

2

มันเป็นปัญหากับ pulseaudio คำสั่งสำหรับ alsa หรือ amixer จะส่ง unmute ไปที่ pulse ไม่ถูกต้อง เมื่อคำสั่ง alsa ส่งสัญญาณปิดเสียงมันเป็นคำสั่งสลับ (ส่งคำสั่งเดียวกันเพื่อปิด / เปิดเสียง)

ตอนนี้ใน pulseaudio พวกเขาได้แยกรหัสปิดเสียงและเปิดเสียง! รายงานจำนวนมากที่การยกเลิกการติดตั้ง pulseaudio จะแก้ปัญหาได้ แต่สำหรับบางคนที่ไม่ใช่คำตอบที่ยอมรับได้ (เช่นฉันเพราะชีพจรมีประโยชน์สำหรับแอพจำนวนมาก)

ดังนั้นเพื่อแก้ปัญหานี้เราต้องสร้างสคริปต์

1- สร้างเอกสารเปล่าใหม่ในโปรแกรมแก้ไขข้อความเช่น gedit หรือ mousepad

2- วางรหัสนี้ในเอกสาร, Soruce ของรหัส: 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- ทำให้ไฟล์ที่เรียกใช้งานได้โดยคลิกขวาที่ไฟล์ไปที่ Properties จากนั้นไปที่แท็บ Permissions และใช้ช่องทำเครื่องหมายเพื่อทำเครื่องหมายไฟล์ที่เรียกใช้งานได้ซึ่งจะทำให้สคริปต์สามารถทำงานได้ เครื่องหมายไฟล์ as-executible-GUI

5- ถัดไปเราจำเป็นต้องเชื่อมโยงคำสั่งกับแป้นพิมพ์คำสั่งสำหรับรหัสเพิ่มขึ้นลดลงและปิดเสียง

ดังนั้นไปที่การตั้งค่าแป้นพิมพ์ - วิธี -i-change-my-keyboard-short-in-xubuntuในพื้นที่แป้นพิมพ์ลัดคลิกเพิ่มแล้วเปิดเปิดไฟล์ "ระดับเสียง" ที่เราสร้างขึ้นจากนั้นเพิ่มคำสั่ง สำหรับรหัสหลังระดับเสียงการเพิ่มปริมาณการอ่านหรือปิดเสียงระดับเสียงฯลฯ แต่ด้วยตำแหน่งของไฟล์โค้ดที่อยู่ตรงหน้าเหมือน"/ home / ชื่อผู้ใช้ / ปิดเสียง"

จากนั้นกำหนดมันให้กับแป้นพิมพ์โดยการกดปุ่มหรือหากมีการใช้คีย์ไปแล้ว
~ เป็นไปได้มากที่เคสจะค้นหาและแทนที่คำสั่ง

ทางลัดที่สำคัญมีแนวโน้มที่จะเรียกว่าXF86AudioRaiseVolume, XF86AudioLowerVolume, XF86AudioMute เนื่องจากเสียงใบ้เท่านั้นที่จะทำลายสมาธิของคุณในการพยายามเปลี่ยนสิ่งนั้นเสียก่อน

ข้อผิดพลาด: 1


ฉันเพิ่งได้แมปไปยังคำสั่งXF86AudioMute amixer set Master toggleปุ่มเพิ่มและลดระดับเสียงจะถูกแมปคล้ายกับamixerคำสั่ง
Chan-Ho Suh

@ Chan-HoSuh คุณมีปัญหาเดียวกันหรือไม่? คุณสามารถเรียกใช้คำสั่งปิดเสียงของสคริปต์นี้ได้หากคุณต้องการด้วยเหตุผลบางอย่างที่ชีพจรขัดขวางการปิดเสียงในเครื่องของฉัน amixer ส่งสลับซึ่งตีความว่าเป็นเพียงปิดเสียงโดยชีพจรหรือเพียงแค่กดปุ่มกด? ฉันใช้สคริปต์ที่คล้ายกันซึ่งแสดงแถบระดับเสียงมาก่อน :( แต่ปิดเสียงและเปิดเสียงและตอนนี้พวกเขามีการแจ้งเตือนดังนั้นมันดีทั้งหมดการสลับเป็นวิธีการตั้งค่ามาก่อน
Mateo

การปรับปรุงเล็ก ๆ น้อย ๆ สำหรับสคริปต์คือการบังคับให้เปิดเสียงในการเพิ่ม / ลดเสียง ฉันยังเพิ่ม 'paplay /usr/share/sounds/ubuntu/stereo/message.ogg' เพื่อรับฟังความคิดเห็นเกี่ยวกับปริมาณ
dma

บางทีมันอาจจะแตกต่างกันก่อน แต่ด้วย PulseAudio 4.0 คุณสามารถใช้คำสั่งเช่นpactl set-sink-volume 0 +5%, pactl set-sink-volume 0 -5%และpactl set-sink-mute 0 toggleการเพิ่มปริมาณปริมาณลดลงและปริมาณการสลับตามลำดับ
jarno

@jarno ใช่นี่คือการแก้ปัญหาที่เฉพาะเจาะจง (ข้อผิดพลาด) ดังนั้นจึงมีแนวโน้มคงที่ / ไม่เกี่ยวข้อง แต่ก็ยังคงแฮ็คเล็ก ๆ น้อย ๆ ที่ดีถ้าไม่มีอะไรทำงาน
Mateo



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) สร้างทางลัดแป้นพิมพ์แบบกำหนดเองใหม่สามชื่อ 'เพิ่มระดับเสียง', 'ลดระดับเสียง' และ 'ปิดเสียง'
- > ประเภททางลัด: คำสั่ง
-> ตามคำสั่งใช้~ / bin / mixctl volup , ~ / bin / mixctl voldnและ~ / bin / mixctl ใบ้ตามลำดับ


1

ฉันมีปัญหาเดียวกันกับเครื่อง Xubuntu 12.04 หลายเครื่องซึ่งอัพเกรดเป็น XFCE 4.10 นี่เป็นวิธีที่รวดเร็วในการแก้ปัญหานี้จากบรรทัดคำสั่ง (หรือด้วย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

คุณสามารถใช้การตั้งค่าแป้นพิมพ์เพื่อตั้งค่าปุ่มปิดดำเนินการคำสั่งที่พบที่นี่ แม้ว่าวิธีแรกที่ระบุไว้ในลิงค์นี้ก็ไม่มีประโยชน์สำหรับผมคนที่สองทำงานที่ดีสำหรับ $ pactl set-sink-mute 0 toggleXFCE4: คุณยังสามารถสร้างสคริปต์หรือตัวเรียกใช้งานเพื่อเรียกใช้คำสั่งเมื่อคลิกเมาส์

FYI ถ้าคุณใช้บางอย่างเช่น Cinnamon (และเดสก์ท็อป gnome อื่น ๆ ) ที่แนะนำข้างต้นของ user197761 ดูเหมือนจะดีกว่าเนื่องจากเสียง applet ของ cinnamon จดจำปริมาตรถูกปิดเสียง: amixer -D pulse set Master Playback Switch toggle(หากคุณชอบคำสั่งหลังนี้โปรดเลิกโหวตคำตอบของเขา / เธอ ไม่ใช่ของฉัน.)

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.