Shell
如何使用 shell 在不同的音頻輸出硬體之間切換?
我將筆記型電腦與帶有揚聲器的外接顯示器一起使用。當顯示器通過 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