由于台式电脑缺少蓝牙模块,并且音箱只支持蓝牙连接,遂通过局域网将音频分享到Android设备,再由安卓设备连接到蓝牙,实现曲线救国。
方案一:Audio Share
安装audio-share-bin包。
as-cmd -b 你局域网的IP
如果提示找不到endpoint_id,则利用pipewire配置虚拟音频输出设备,新建~/.config/pipewire/pipewire.conf.d/audio-share-sink.conf,输入:
context.objects = [
{ factory = adapter
args = {
factory.name = support.null-audio-sink
node.name = "Audio Share Sink"
media.class = Audio/Sink
object.linger = true
audio.position = [ FL FR ]
priority.session = 1009
priority.driver = 1009
monitor.channel-volumes = true
monitor.passthrough = true
}
}
]
切换音频输出到这个虚拟设备:
然后安装Audio Share的apk,输入电脑的ip和端口,蓝牙连接到音箱即可将电脑声音传输到音箱上。
将音频由PulseAudio切换到PipeWire
由于本文使用的工具依赖于pipewire,所以先切换音频驱动。
本台电脑的操作系统是Manjaro,直接安装manjaro-pipewire即可,并卸载PulseAudio相关包。
详细安装可搜索相关教程。
如果KDE出现无法音频控制界面消失,安装plasma-pa包即可。
延迟更低的方案
本方案同样依赖于pipewire
安装pipewire-roc
编辑~/.config/pipewire/pipewire.conf.d/roc-sink.conf
context.modules = [
{ name = libpipewire-module-roc-sink
args = {
fec.code = rs8m
remote.ip = 接收端的IP
remote.source.port = 10001
remote.repair.port = 10002
sink.name = "Roc Sink"
sink.props = {
node.name = "roc-sink"
}
}
}
]
重启PipeWire:
systemctl restart --user pipewire.service
现在,你应该能在已加载模块列表中看到 Roc Source:
$ pw-cli ls Module
...
id 29, type PipeWire:Interface:Module/3
object.serial = "29"
module.name = "libpipewire-module-roc-sink"
之后,如果您选择 “ROC Sink “作为输出设备,写入该设备的声音将被发送到远程 Roc 接收端。
安装安卓接收端App:https://github.com/roc-streaming/roc-droid
如果没有声音,请确保安卓与PC网络一定是连通的。
参考文章
Pipewire – Audio settings and widget have disappeared
Roc Toolkit 0.4 + updated tutorial for live audio streaming
https://github.com/mkckr0/audio-share/issues/57#issuecomment-2059929485