Scripting

查看聲音輸出是否靜音(ALSA with Pulseaudio)

  • December 9, 2020

我正在嘗試尋找輸出的命令,1或者0取決於我的輸出是否靜音。

我正在嘗試這個:

amixer sget Master

這是我得到的輸出:

Simple mixer control 'Master',0
 Capabilities: pvolume pvolume-joined pswitch pswitch-joined
 Playback channels: Mono
 Limits: Playback 0 - 64
 Mono: Playback 64 [100%] [0.00dB] [on]

現在這裡的值會相應地改變(如果我降低音量,百分比和 dB 值會改變)。但是,如果我Pavucontrol在“輸出設備”選項卡上進入並靜音我的輸出,則上述命令的輸出保持不變。從字面上看,什麼都沒有改變。但我的聲音確實被靜音了。

我應該使用什麼命令?為什麼不[on]改成[off]? 不應該嗎?

提前致謝。

經過長時間的搜尋,我實際上設法找到了答案。這可能對其他正在尋找類似東西的人有所幫助!

你需要什麼:

pacmd list-sinks

這個命令有這樣一行:

muted: no

當我將設備靜音時,這no確實會變為。yes完美的。如果有人需要,我設法使用此命令剝離輸出:

pacmd list-sinks | awk '/muted/ { print $2 }'

抱歉發布得太早了,我似乎無法在任何地方找到解決方案。

或者,對於像我這樣沒有 PulseAudio 或只想使用 PulseAudio 的人amixer,一種解決方案是:

amixer get Master | sed 5q | grep -q '\[on\]'

0如果未靜音和靜音則返回1

引用自:https://unix.stackexchange.com/questions/415614