如何使PulseAudio运行?


28

我想将我的Raspberry Pi用作可以通过网络播放音频的PulseAudio接收器。

首先,我想让Pul​​seaudio在本地运行,并遇到各种错误。我正在使用推荐的Debian映像。

如何启动和运行PulseAudio的最佳过程是什么?


到目前为止,这是我尝试过的:

程序

到目前为止,我的过程类似于以下内容:

安装Pulseaudio和VLC:

sudo apt-get install pulseaudio

配置GStreamer以使用pulseaudio接收器:

gconftool-2 -t string --set /system/gstreamer/0.10/default/audiosink pulsesink

加载音频设备的内核模块

sudo modprobe snd_bcm2835

使用mp3运行VLC

vlc 

问题

VLC反复破解,打印此错误:

[0x7503d0] alsa audio output error: cannot write: Broken pipe

您能显示您得到的错误吗?
darryn.ten 2012年

Answers:


9

我已经使用ALSA接收器在Raspberry Pi上运行它,过程如下:

要安装必要的文件:

sudo apt-get install pulseaudio pulseaudio-module-zeroconf alsa-utils avahi-daemon

要启用ALSA:

sudo modprobe snd-bcm2835                      # load module for single boot
echo "snd-bcm2835" | sudo tee -a /etc/modules  # load module for persistance

设置网络:

sudo nano /etc/pulse/default.pa

并取消注释:

load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1;192.168.0.0/16
load-module module-zeroconf-publish

要启动pulseaudio服务器,请使用:

pulseaudio -D

您应该能够通过使用paplay(sudo apt-get install pulseaudio-utils)播放wav文件并通过在系统的声音控制面板中选择接收器来通过网络来测试其是否有效。

您也许还可以通过以下方式在系统范围内进行设置:

sudo pulseaudio --system 

pulseaudio-module-zeroconf在apt-get安装部分中缺少。应该提到也许也pulseaudio --log-level=debug排除任何问题。在声源(不是树莓派)上,应启动paprefs以轻松概述Pulseaudio conf(如果有X11)。pulseaudio如有疑问,请不要忘记重启。
vaab 2012年

7

如果希望Pulseaudio在引导时启动,但作为用户级服务,则可以制作systemd单元文件。这可能有所帮助,因为Pulseaudio不希望在系统模式下运行。https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

这是我在/etc/systemd/system/pulseaudio.service中编写的服务

[Unit]
Description=PulseAudio Sound System
Before=sound.target

[Service]
User=pi
BusName=org.pulseaudio.Server
ExecStart=/usr/bin/pulseaudio
Restart=always  

[Install]
WantedBy=session.target

Before =告诉它等到sound.target初始化之后。BusName =将其连接到D-Bus WantedBy = session.target是一个有用的默认值,但我真的不知道它的作用。


显然,我们可以将其放入~/.config/systemd/user/pulseaudio.service并与--user标志一起使用systemd 以避免root特权。
jchook

6

我很难使用模拟输出让Pulseaudio在Wheezy raspbian(2012-10-28)上运行。以下是我为使其在每个会话模式(而不是系统模式)下工作而所做的工作。系统模式可能也可以工作,但我没有尝试过。设置服务器将需要更多的工作。我在不同的地方找到了这些信息,希望在这里收集这些信息会对某人有所帮助。

安装pulseaudio并确保用户(例如eric)属于音频组:

sudo apt-get install pulseaudio pulseaudio-utils
sudo adduser eric audio

更改/etc/asound.conf如下所示。默认情况下,这会将pulseaudio设置为用作alsa设备,因此应用程序无需任何其他配置即可使用它。前两个声明(包括注释的声明)在原始文件中。

pcm.mmap0 {
    type mmap_emul;
    slave {
      pcm "hw:0,0";
    }
}

#pcm.!default {
#  type plug;
#  slave {
#    pcm mmap0;
#  }
#}

pcm.pulse { type pulse }
ctl.pulse { type pulse }
pcm.!default { type pulse }
ctl.!default { type pulse }

将以下行添加到/etc/pulse/daemon.conf中:

default-sample-rate = 48000
resample-method = trivial

trivial是质量最低的方法,但使用大约6%的cpu。src-sinc-fastest也为我工作,但使用大约25%的CPU。其他人也可能工作。后来我不太了解它的必要性,但这似乎是神奇的成分。您可以在此处了解更多信息

最后,要使歌曲播放之间的声音突然消失,请在/etc/pulse/default.pa中将此行注释掉,如下所示:

#load-module module-suspend-on-idle

当同时播放两个音源时,仍然会有一些遗漏,如果我发现可以解决的办法,请添加到此答案中。


通过网络播放音频时,即使trivial对于我来说,PulseAudio也使用约16%的CPU 。
内森·奥斯曼
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.