Estou tentando configurar um coletor PulseAudio no meu Raspberry Pi, a fim de transmitir todos os sons do sistema do meu PC para lá. Qual é a melhor forma de fazê-lo?
Por exemplo, é possível assistir a filmes ou a latência é muito alta? Eu tentei isso há algum tempo usando o gstreamer, mas com uma latência de cerca de 2 segundos, o que é inútil para os meus requisitos.
Respostas:
As instruções oficiais para a criação de uma "conexão direta" em uma rede espero apenas trabalho para a maioria das pessoas, mas parece pulseaudio e eu não se dão muito bem: ele me levou horas . [Além de "conexão direta", você também pode usar um método de "túnel" descrito mais abaixo, mas eu recomendo a leitura primeiro.]
Agora tenho um som de streaming de desktop (fedora 17) para o pi. Minimizei os
/etc/pulse
arquivos de configuração dos dois lados. No lado da área de trabalho:/etc/pulse/client.conf
O endereço LAN do meu pi com a porta pulseaudio padrão. Mas aqui está algo que me deixou confuso por um tempo - com um servidor especificado, o pulseaudio nem sequer começava:
Ele será executado em primeiro plano (provavelmente porque não lê pulse-client.conf?). No entanto , como se vê, não é necessário executá-lo no lado da área de trabalho (envio) , algo que não está explicitado nos documentos do pulseaudio. Usando
lsof -i -P
isso, parece que plugins de nível inferior para vários players de mídia fazem o trabalho.Portanto, essa linha "client.conf" é realmente tudo o que você precisa no lado do desktop / cliente, se tudo o que você fará é usar a rede (mas consulte "Mais complicações", abaixo).
Embora o daemon pulseaudio (no lado receptor / servidor) possa ser executado como um serviço do sistema, os desenvolvedores do pulse o recomendam e, de fato, no pi o script init apenas causa um aviso: você ainda precisa iniciar por você mesmo. O Fedora nem sequer inclui uma entrada do serviço de inicialização systemd para ele.
Portanto, no lado pi, você deve iniciar e parar explicitamente o processo do servidor pulseaudio, configurado da seguinte maneira:
/etc/pulse/daemon.conf
Você pode usar -1 para
exit-idle-time
manter o daemon em execução indefinidamente. Cuidado: isso é segundos e o padrão é 20 (o que significa que continuará "misteriosamente" morrendo se você não definir isso)./etc/pulse/default.pa
Como esse é um aplicativo de rede, não é uma boa ideia executá-lo como root. No entanto, como mencionado em
man pulseaudio
, também é uma boa idéia "renice" o processo para dar uma prioridade mais alta. Você pode fazer isso manualmente comnice
, mas o pulseaudio fará isso automaticamente para o root ou para os membros dopulse-rt
grupo, se o executável for "setuid", o que significa que ele pode fazer uso de alguns privilégios de root e depois mudar para o uid correto não registrado (ping
epasswd
também precisa fazer isso). Então (como root ou sudo):Não há um
pulse-rt
grupo criado quando o pulseaudio está instalado no raspbian, portanto:Isso lhe dará um gid como 1003. Adicione (por exemplo) o usuário pi a esse grupo:
Mas no raspbian, você ainda não poderá mudar como pi. Para isso, adicione a
/etc/security/limits.conf
:Você precisa realmente executar um logon antes que essas alterações ocorram; Se você usar ssh com o pi, use
login
. Agora você pode iniciar o pulseaudio e ele se renegará -11, o que provavelmente é uma prioridade mais alta que a maioria dos outros processos (veja o valor de NICE emtop
).Ao reproduzir som transmitido da rede, o pulseaudio no pi usa cerca de 10% da CPU e uma quantidade trivial de memória. :) Ele e minha área de trabalho estão em uma LAN com fio; o fluxo de pulsos bruta de dados pcm (acredito), portanto, o uso da largura de banda corresponde à taxa de amostragem da fonte, 1 kB / s ou mais. Infelizmente, há um atraso perceptível no som se você estiver assistindo a um vídeo.
Ainda mais complicações ...
Infelizmente, nenhum dos vários aplicativos de som do meu PC funcionou imediatamente;
mpg123
não seria executado. Para isso, no fedora, você precisa dompg123-plugins-pulseaudio
pacote. Para coisas em flash no navegador (por exemplo, youtude), você precisaalsa-plugins-pulseaudio
(é isso que realmente se conecta ao servidor remoto). Outras distros devem ter pacotes similares. Se você já usava o pulseaudio antes (eu não estava), você já pode instalá-los.Os sinos e assobios da área de trabalho do KDE também não funcionaram. Esse é um problema mais difícil de resolver, porque procura um servidor pulseaudio local e, conforme descrito, usar uma conexão direta significa que nenhum servidor pode ser executado localmente. A maneira de contornar isso é usar o método "tunnel".
módulo-túnel-pia
Essa é a outra maneira mencionada nos documentos do pulseaudio. Nesse caso, você tem um servidor executando nos dois lados e uma mão na outra. Para fazer isso, comente o "servidor padrão"
/etc/client.conf
e adicione um local que/etc/default.pa
contenha:Se você não
sink_name
inserir, o pulseaudio não será iniciado. Osink
refere-se ao nome do coletor no lado pi, que também precisa de um nome; adicione um correspondentesink_name
àmodule-alsa-sink
linhadefault.pa
lá:Inicie o servidor nos dois lados e pronto ... mais ou menos. Enquanto tudo, incluindo os bipes do KDE, agora eram executados, a reprodução em flash do navegador gaguejou muito. No entanto, em outro ambiente de área de trabalho (na verdade, apenas um gerenciador de janelas, fvwm), tudo estava bem.
Eu gosto do KDE, mas posso viver sem os bipes, então por enquanto vou manter uma conexão direta.
Solução de problemas
Se você tiver problemas, o uso
pulseaudio -vvvv --log-level=debug
do pi fornece muitas mensagens de depuração. Inicialmente, quando não consegui ouvir som no pi, isso relatou um problema "relacionado a um bug no driver ALSA bcm2835" que me pareceu estranho, pois o som era bom apenas com o alsa, e tenho certeza de que existe um software pi que depende disso. no pulseaudio -apt-get remove pulseaudio
e uma reinstalaçãoapt-get install pulseaudio
parecia consertar isso ... Não é uma solução que eu gostaria de ver, mas, ei, pelo menos agora eu posso ouvir tish sem precisar conectar alto-falantes em todas as caixas. Na maioria das vezes.fonte