据我所知,每次 youtube 加载新视频时,它都会更改其使用的接收器输入的索引,或者创建一个新的接收器输入以用于该新视频并丢弃旧接收器。我想要使用的默认接收器是接收器 3,但它总是使用接收器 2,尽管默认接收器设置为 3(“pacmd list-sinks”中接收器 3 旁边有一个星号)。每次加载新视频时,我都必须不断调用“pacmd move-sink-input [index] 3”。你们知道让默认接收器始终使用接收器 3 的方法吗?谢谢!
答案1
:) 第一,高票数相关问题应该指出你的解决方案:
如何在播放过程中使用“pacmd set-default-sink”更改 pulseaudio 接收器?
您可能需要禁用流目标设备恢复将相应行编辑
/etc/pulse/default.pa
为:load-module module-stream-restore restore_device=false
然后尝试:
sudo apt-get install libasound2:i386 libasound2-plugins:i386
答案2
我决定采用 hack 方式。我创建了一个 bash 脚本:
文件:move-sink-input
#!/bin/bash
index=`pacmd list-sink-inputs | grep index: | grep -v "index: 0"`
index=${index:11}
if [ $index ]; then
pacmd move-sink-input $index 3
fi
然后我创建了另一个 bash 脚本:
文件:move-sink-input-loop
#!/bin/bash
while true; do
move-sink-input
sleep 1
done
然后我用“move-sink-input-loop > /dev/null &”启动它。
tl;dr:我编写了一个脚本,每秒移动最新的输入。
我之所以需要第二个脚本进行循环,是因为“pacmd list-sink-inputs”的结果在脚本的运行实例中保持不变,因此在另一个脚本中执行循环来启动初始脚本似乎实际上更新了数据。
答案3
如果您使用 KDE,我想我已经找到了解决方案。
在用于自动启动脉冲的start-pulseaudio-x11脚本中,有以下命令:
if [ x"$KDE_FULL_SESSION" = x"true" ]; then
/usr/bin/pactl load-module module-device-manager "do_routing=1" > /dev/null
fi
我的猜测是,它为 KDE 提供了一种控制接收器的方法,并使 pulseaudio 忽略您使用 pacmd 设置的默认接收器... 好吧,无论如何都没有 KDE 工具可以控制接收器,所以您最好完全删除此子句 - 然后默认接收器设置对我来说就可以正常工作了。