Shell

如何使用 shell 在不同的音頻輸出硬體之間切換?

  • March 15, 2022

我將筆記型電腦與帶有揚聲器的外接顯示器一起使用。當顯示器通過 HDMI 連接時,我可以在普通筆記型電腦音頻輸出和顯示器輸出之間切換(使用 GUI:聲音設置 –> 硬體)。

我重複這個過程很多次,我開始懷疑我是否可以自動化它,或者無論如何,使用 shell 以更快的方式執行它。

我的發行版是帶有 gnome 3 的 Ubuntu 12.04。

編輯:

我嘗試使用 pacmd,但 list-sinks 只給了我目前正在使用的設備:

pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.hdmi-stereo>

從 GUI 切換後:

pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>

如果我嘗試改變它,我會得到:

pacmd set-default-sink alsa_output.pci-0000_00_1b.0.hdmi-stereo
Welcome to PulseAudio! Use "help" for usage information.
Sink alsa_output.pci-0000_00_1b.0.hdmi-stereo does not exist.

在這種情況下,卡總是相同的。交換機和另一個交換機之間的變化是“卡配置文件”。

所以實際有效的解決方案是:

pacmd set-card-profile <cardindex> <profilename>

就我而言,我找到了所有的卡配置文件:

pacmd list-cards

在我可以在顯示器和筆記型電腦揚聲器之間切換之後:

pacmd set-card-profile 0 output:hdmi-stereo

和:

pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo

其中 0 是卡片的索引:

pacmd list-cards
Welcome to PulseAudio! Use "help" for usage information.
>>> 1 card(s) available.
   index: 0
   name: <alsa_card.pci-0000_00_1b.0>

最後,為了加快切換速度,我在 .bashrc 文件中設置了兩個別名:

alias audio-hdmi='pacmd set-card-profile 0 output:hdmi-stereo+input:analog-stereo'
alias audio-laptop='pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo'

通過這種方式,我可以在顯示器或筆記型電腦(耳機)的音頻之間切換,在 shell 中輸入:audio-hdmi 或 audio-laptop

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