1 蓝牙耳机不出声
有时候,蓝牙耳机成功连接之后,播放音乐时仍然是扬声器在出声。在
KDE 系统设置里选择播放设备,只能看到
PulseAudio,不能列出具体的音频设备(内部音频或蓝牙耳机),因此也无法指定。这个时候,可以先通过命令行列出当前可用的音频设备:
$ pacmd list-sinks | grep -e 'name:' -e 'index:'
index: 3
name:
* index: 7
name:
然后就可以根据尖括号里的设备名称强制指定音频输出设备了:
$ pacmd set-default-sink bluez_sink.xx_xx_xx_xx_xx_xx.a2dp_sink
2 本地运行 PulseAudio 服务器
有时候我们想让
环境中的应用程序也能够发声。一个简单的办法是,在宿主端启动一个
PulseAudio 服务器,让 chroot 端的 PulseAudio
作为客户端连上来。为了方便宿主端开启和关闭服务,我们在宿主端创建一个脚本,文件名叫
paserver:
#!/bin/sh
usage() {
echo'Usage: paserver '
exit 1
}
case "$1" in
on )
pactl load-module module-native-protocol-tcp \
auth-ip-acl=127.0.0.1 auth-anonymous=1
;;
off )
pactl unload-module module-native-protocol-tcp
;;
* )
usage
;;
esac
在宿主端需要启动声音服务的时候,直接运行
paserver on,用完之后,运行
paserver off 就可以了,不需要每次都杀掉
pulseaudio 重新启动。
在客户端,由于客户端启动之后一定是需要连接服务端的,因此我们不采取类似服务端的动态加载模式,直接写到
PulseAudio 的配置文件里面。在客户端创建
~/.pulse/default.pa,写入以下内容:
load-module module-native-protocol-unix
load-module module-null-sink
load-module module-stream-restore
load-module module-rescue-streams
load-module module-always-sink
load-module module-tunnel-sink-new server=127.0.0.1 sink_name=Pulse channels=2
这样客户端启动 PulseAudio
的时候就会直接连接服务端了。
另外,在正常的桌面环境下,PulseAudio
一段时间不使用之后会退出,需要再使用的时候,客户程序会通过
dbus 来重启它。在 chroot
环境下,滇狐没研究出如何配置自动重启
PulseAudio。因此一个比较偷懒的做法是把空闲时自动退出的功能给禁用掉。创建
~/.pulse/daemon.conf,并写入以下内容就可以了:
exit-idle-time = -1