答案1
默认情况下,PulseAudio 将尝试记住上次使用每个应用程序的输出的定向位置,并继续使用该输出设备,直到另有通知。如果没有以前的使用记录,则使用后备设备。
您可以禁用此功能,并使所有应用程序始终开始使用后备设备,除非通过编辑/etc/pulse/default.pa
更改行进行了专门配置:
load-module module-stream-restore
对此:
load-module module-stream-restore restore_device=false
或者,有一个paswitch
工具可以遍历 PulseAudio 每个应用程序的持久输出记录,并将它们全部更改为指向指定的设备:https://www.tablix.org/~avian/git/paswitch.git(更多信息在这里)
答案2
Pulseaudio 播放将首先尝试使用默认接收器设备,
如果默认值不可用,则将使用后备设备
只有 2 台设备时,将其中一台设置为默认设备,如果默认设备不可用,第二台设备将自动备用
pavucontrol
不显示默认接收器设置
您可以使用这些终端命令:
pactl get-default-sink
- 显示默认接收器名称
和pactl list sinks | grep 'Name'
- 显示所有活动接收器的名称
然后使用pactl set-default-sink <Name>
- 更改默认接收器
(也可以使用文本编辑器更改第一个命令中的默认接收器文件)
或者用于pasystray
在 gui 中查看信息并根据需要更改默认值
设置默认值后,用户可以设置音频流以pavucontrol
使用其他接收器
用户更改将pavucontrol
保存到文件夹 ~/.config/pulse/ 中的数据库文件中
答案3
这是使用 telcoM 和 nik gnomic 答案的完整解决方案。为了防止 PulseAudio 记住每个应用程序使用的最后一个声卡,我首先复制/etc/pulse/default.pa
并~/.config/pulse/
添加restore_device=false
:
sed 's/load-module module-stream-restore.*/load-module module-stream-restore restore_device=false/' /etc/pulse/default.pa > ~/.config/pulse/default.pa
接下来,使用 zenity 命令创建了一个简单的对话框:
#!/bin/sh
set -o errexit -o nounset
defaultCard="$(pactl get-default-sink)"
options="$(pactl list sinks \
| awk -F': *' -v defaultCard="$defaultCard" \
'/Name:/ { if ($2 == defaultCard) { printf "TRUE " } else { printf "FALSE " }; printf "%s ", $2 } \
/Description:/ { print "\"" $2 "\"" }' \
| sort -k 3 \
| tr '\n' ' ')"
# quoted strings in `options' requres `eval'
newDefaultCard="$(eval zenity --list --radiolist --title=\"Sound Card Selection\" --text=\"Select a sound card to use\" --hide-header --hide-column=2 --width=330 --height=160 --column= --column= --column= $options)"
pactl set-default-sink "$newDefaultCard"
结果如下: