我将笔记本电脑与带有扬声器的外接显示器一起使用。当通过 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.
答案1
在这种情况下,该卡始终是相同的。交换机与另一个交换机之间的变化是“卡配置文件”。
所以实际有效的解决方案是:
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
答案2
我编写了一个小指示器小程序,可以让您切换声音输出。没有 shell 脚本,但可能对您或其他读者有帮助。
答案3
我根据之前的脚本创建了一个非常小的脚本,它不仅可以切换音频,还可以切换视频输出。它使用分散在显示之间切换。
这是代码:
#!/bin/bash
CURRENT_PROFILE=$(pacmd list-cards | grep "active profile" | cut -d ' ' -f 3-)
if [ "$CURRENT_PROFILE" = "<output:hdmi-stereo>" ]; then
pacmd set-card-profile 0 "output:analog-stereo+input:analog-stereo"
disper -s
else
pacmd set-card-profile 0 "output:hdmi-stereo"
disper -S
fi
对我来说它特别有用,因为我不喜欢克隆显示器。我要么使用其中之一,要么使用另一个。您可能需要调整音频配置文件以适应您的特定系统。
答案4
你可以尝试这个脚本:https://github.com/giner/helplinux/tree/master/scripts/switch-sound
在 Ubuntu 10.04 - 13.04 和 Arch Linux 上测试