Como fazer o PulseAudio funcionar?

28

Gostaria de usar meu Raspberry Pi como um coletor PulseAudio que pode reproduzir áudio pela rede.

Para começar, quero que o Pulseaudio seja executado localmente e tenha vários erros. Estou usando a imagem Debian recomendada.

Qual é o melhor procedimento para colocar o PulseAudio em funcionamento?


Isto é o que eu tentei até agora:

Procedimento

Até agora, meu procedimento era algo como:

Instale o Pulseaudio e o VLC:

sudo apt-get install pulseaudio

Configure o GStreamer para usar o coletor pulseaudio:

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

Carregue o módulo do kernel para o dispositivo de áudio

sudo modprobe snd_bcm2835

Execute o VLC com um mp3

vlc 

Problemas

O VLC racha repetidamente, imprimindo este erro:

[0x7503d0] alsa audio output error: cannot write: Broken pipe
Bengt
fonte
Você pode mostrar os erros que está recebendo?
darryn.ten

Respostas:

9

Eu consegui trabalhar no meu Raspberry Pi usando o coletor ALSA, com o seguinte procedimento:

Para instalar os arquivos necessários:

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

Para ativar o ALSA:

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

Para configurar a rede:

sudo nano /etc/pulse/default.pa

e descomente as linhas:

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

Para iniciar o servidor pulseaudio, use:

pulseaudio -D

Você deve poder testar se ele funciona reproduzindo um arquivo wav com paplay ( sudo apt-get install pulseaudio-utils) e também pela rede, selecionando o coletor no painel de controle de som do sistema.

Você também poderá configurar no modo de todo o sistema com:

sudo pulseaudio --system 
Adam MW
fonte
pulseaudio-module-zeroconfestá faltando na parte de instalação do apt-get. Deve mencionar talvez também o pulseaudio --log-level=debugpara solucionar problemas. Na fonte de som (não no raspberry pi), você deve iniciar paprefspara visualizar facilmente o seu pulseaudio conf (se você tiver o X11). E não se esqueça de reiniciar pulseaudioem caso de dúvida.
vaab
7

Se você deseja que o pulseaudio inicie na inicialização, mas como um serviço no nível do usuário, você pode criar um arquivo de unidade systemd. Isso pode ajudar, pois o pulseaudio não prefere executar no modo de sistemas. https://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/SystemWide/

Aqui está o serviço que escrevi em /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

Antes = diz para esperar até depois que o sound.target for inicializado. BusName = conecta ao D-Bus WantedBy = session.target é um padrão útil, mas eu realmente não sei o que ele faz.

semitons
fonte
Aparentemente, podemos colocar isso ~/.config/systemd/user/pulseaudio.servicee usar systemd com a --userflag para evitar privilégios de root.
jchook 22/11
6

Eu tive dificuldade em obter o pulseaudio em execução no Wheezy raspbian (28-10 2012) usando a saída analógica. A seguir, o que fiz apenas para fazê-lo funcionar no modo por sessão (não no modo sistema). O modo do sistema também pode funcionar, não tentei. A configuração do servidor exigirá mais trabalho. Encontrei essas informações em vários lugares, espero que reuni-las aqui ajude alguém.

Instale o pulseaudio e verifique se o usuário (por exemplo, eric) faz parte do grupo de áudio:

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

Altere o arquivo /etc/asound.conf da seguinte maneira. Isso configura o pulseaudio para ser usado como dispositivo alsa por padrão, para que os aplicativos o usem sem nenhuma configuração adicional. As duas primeiras declarações (incluindo a comentada) estavam no arquivo original.

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 }

Adicione as seguintes linhas ao /etc/pulse/daemon.conf:

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

trivialé o método de qualidade mais baixa, mas usa cerca de 6% da CPU. src-sinc-fastesttambém funcionou para mim, mas use cerca de 25% da CPU. Outros podem funcionar também. Mais tarde, não entendi bem a necessidade, mas parecia ser o ingrediente mágico. Você pode ler mais sobre isso aqui .

Por fim, para silenciar o som entre as músicas, comente esta linha em /etc/pulse/default.pa da seguinte maneira:

#load-module module-suspend-on-idle

Ainda existem algumas desistências quando duas fontes são reproduzidas ao mesmo tempo, se eu descobrir um remédio para isso, acrescentarei a esta resposta.

ergosys
fonte
Ao reproduzir áudio pela rede, o PulseAudio usava cerca de 16% da CPU, mesmo trivialpara mim.
Nathan Osman