我在 Raspberry Pi 上使用 Raspbmc(带有 Kodi 14)。现在我希望pulseaudio
能够将所有 Linux 计算机上的音乐轻松传输到 Raspberry pi。我的问题是,我无法在 Raspberry Pi 上运行pulseaudio。我尝试了以下步骤:
1.安装pulsaudio
sudo apt-get install pulseaudio pulseaudio-module-zeroconf
2. 设置pulsaudio
sudo nano /etc/pulse/default.pa
我添加了以下几行:
load-module module-native-protocol-unix auth-anonymous=1
load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.1.0/24 auth-anonymous=1
load-module module-zeroconf-publish
3.启动pulsaudio
首先,我尝试将脉冲作为守护进程启动:
pulseaudio -D
我还尝试在系统范围内启动它:
sudo pulseaudio --system
但脉冲根本没有出现在我的其他机器上(当它们找到对方时,它的配置是正确的)。这里有什么问题吗?
答案1
你必须编辑system.pa
,而不是default.pa
。当您登录 RPI 并运行时,ps fax
您会注意到这一行:
/usr/bin/pulseaudio --system --realtime --log-target=syslog --log-level=1 --disallow-exit --disable-shm --exit-idle-time=-1
这--system
就是让pulseaudio读取system.pa
而不是读取的 原因default.pa
。另请注意,kodi 已经为您启动了一个pulseaudio 实例,您不能简单地启动另一个实例。第一个实例将绑定到0.0.0.0:4713
,因此第二个实例将无法绑定!我的kodi不允许我重新启动pulseaudio,因此更改配置文件后需要重新启动。
要使远程接收器实际显示在客户端上,您必须(在客户端上):
- 加载模块
module-zeroconf-discover
(pactl load-module module-zeroconf-discover
) 并 - 用于
paprefs
启用远程接收器。您必须选中第一个选项卡上paprefs
显示的第一个复选框。 (仅仅加载模块对我来说还不够。) - 在客户端上重新启动 avahi-daemon。
您可以avahi-browse -a
在您的客户端上使用它来查看它是否确实看到您的 pa 服务。重要的一行将如下所示:
+ wlan0 IPv4 root@raspbmc PulseAudio Sound Server local
我大约 2 小时前刚刚做了这个,但它对我来说并没有真正的作用。是的,远程接收器出现pavucontrol
,我可以将其设置为默认接收器并控制其音量,但 Spotify 无法工作(不播放音乐。这是我唯一的测试。)。当我打开终端并运行它时export PULSE_SERVER=rpi02.local:4713; spotify
,它就可以工作。设置方法PULSE_SERVER
开箱即用,没有任何零配置的恶作剧。 (但这可能是 Ubuntu 特有的问题。)
如果您打算涉及 wifi,则还有另一个 RPI 特定问题:
通过网络远程使用Raspberry Pi的pulseaudio时,存在音频播放乱码的常见问题。显然,使用 wifi 经常会触发这个问题,但这仍然是一个 Pi 硬件特定问题,并且有可用的解决方案。
- 在您的树莓派上:
sudo sed -i 's/^\(load-module module-udev-detect\)/\1 tsched=0/' /etc/pulse/system.pa
- 在 Pi 上重新启动pulseaudio
- 将远程客户端连接到 Pi 上的 pa 服务器
这是一个已知问题,与此解决方案一起在科迪维基。阅读tsched
,例如乌布努图SE,我们了解到这是一个时序问题,是由声音硬件引起的。通过让tsched=0
Linux 使用不同的计时模型,我相信这对 CPU 来说更加密集。通过这一解决方案,当播放一个远程流时,pulseaudio 服务在我的 B+ 上占用了 17% 的 CPU。