Lui*_*ano 44 shell ubuntu audio pulseaudio
我将笔记本电脑与带扬声器的外接显示器一起使用。当显示器通过 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>
Run Code Online (Sandbox Code Playgroud)
从 GUI 切换后:
pacmd list-sinks | grep name:
name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
Run Code Online (Sandbox Code Playgroud)
如果我尝试改变它,我会得到:
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.
Run Code Online (Sandbox Code Playgroud)
Lui*_*ano 39
在这种情况下,卡总是相同的。交换机和另一个之间的变化是“卡配置文件”。
所以实际有效的解决方案是:
pacmd set-card-profile <cardindex> <profilename>
Run Code Online (Sandbox Code Playgroud)
就我而言,我找到了所有卡片配置文件:
pacmd list-cards
Run Code Online (Sandbox Code Playgroud)
在我可以在显示器和笔记本电脑扬声器之间切换之后:
pacmd set-card-profile 0 output:hdmi-stereo
Run Code Online (Sandbox Code Playgroud)
和:
pacmd set-card-profile 0 output:analog-stereo+input:analog-stereo
Run Code Online (Sandbox Code Playgroud)
其中 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>
Run Code Online (Sandbox Code Playgroud)
最后,为了使切换更快,我在 .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'
Run Code Online (Sandbox Code Playgroud)
通过这种方式,我可以在来自显示器或笔记本电脑(耳机)的音频之间切换,在外壳中输入:audio-hdmi 或 audio-laptop
我写了一个小指示器小程序,可以让你切换声音输出。没有 shell 脚本,但可能对您或其他读者有所帮助。
https://github.com/lkettenb/sound-output-switcher