Usando Pi para transmitir toda a saída de áudio do meu PC para o meu aparelho de som

37

Meu problema é bastante simples, mas não consegui encontrar uma solução satisfatória.

Basicamente, quero que meu Raspberry Pi seja conectado ao meu aparelho de som e reproduza qualquer saída de áudio do meu computador via wifi para o PI.

Existe alguma maneira de fazer isso facilmente, sem a necessidade de usar jogadores especiais? Ou seja, existe alguma maneira de o PC reconhecer o Pi como "alto-falante"?

Eu gostaria de ouvir todos os sons no meu PC no aparelho de som, ou seja. Jogos, músicas, sons do sistema, notificações, vídeos do youtube etc.

Muito obrigado!

Jerome
fonte

Respostas:

24

Se você estiver executando o Linux no seu PC, isso é perfeitamente possível, desde que você instale e configure corretamente o PulseAudio nos computadores Raspberry Pi e Linux.

Se o seu PC estiver executando o Windows ... Pule para o final da postagem (que acabei de atualizar).

Outra opção seria usar o PulseAudio como receptor / cliente AirPlay, mas até onde eu sei, isso não é possível.

Mas, se você estiver usando Linux, continue lendo:

Nota 1: O PulseAudio por WiFi funcionará perfeitamente em alguns roteadores, mas falhará em outros.

Nota 2: As instruções a seguir são de uma conversa que vários usuários do Raspberry Pi (inclusive eu) tiveram sobre esse mesmo tópico .

1) Instale o PulseAudio no seu Raspberry Pi

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

2) Verifique se o PulseAudio é iniciado automaticamente:

sudo nano /etc/default/pulseaudio

Procure a entrada PULSEAUDIO_SYSTEM_START e altere-a para 1 para que se pareça com PULSEAUDIO_SYSTEM_START = 1

3) Configure o PulseAudio para funcionar na rede:

sudo nano /etc/pulse/system.pa

Adicione as seguintes linhas:

load-module module-native-protocol-tcp auth-ip-acl = 127.0.0.1; 192.168.1.0/24

load-module module-zeroconf-publish

4) Reinicie seu Raspberry Pi:

sudo reboot

5) Agora, no seu PC Linux, instale os paprefs . Se sua distribuição Linux é baseada no Debian (como Ubuntu, Mint, etc ...), você pode usar este comando:

sudo apt-get install paprefs

6) Execute paprefs e, em Network Access enable , disponibilize localmente dispositivos de som de rede PulseAudio detectáveis ​​localmente

7) Em Servidor de rede, ative Habilitar acesso de rede a dispositivos de som locais e marque as duas opções (isso provavelmente não é necessário, a menos que você também queira usar sua caixa Linux como servidor / coletor)

8) Em Multicas / RTP, habilite as duas opções

9) Verifique seus dispositivos de saída disponíveis (use seu aplicativo de distribuição de áudio / mixador do Linux). Seu Raspberry Pi (deve) aparecerá listado; selecione-o e tudo o que for reproduzido no seu Linux será redirecionado para o Raspberry Pi.

Se o seu Raspberry Pi ainda não estiver disponível, tente reiniciar o seu PC Linux.


ATUALIZAÇÃO: Enviando todo o áudio do Windows para o Raspberry Pi

Você ainda precisará seguir as instruções anteriores para instalar e configurar o PulseAudio no seu Raspberry Pi.

Agora, é isso que você precisará fazer para o Windows:

1) Baixe a versão mais recente do LineInCode

2) Descompacte o arquivo baixado

2) Faça o download do Plink do PuTTY e coloque o arquivo plink.exe na mesma pasta em que você extraiu o LineInCode

3) Abra o Bloco de notas e cole o seguinte código:

linco.exe -B 16 -C 2 -R 44100 | plink 192.168.1.104 -l pi -pw raspberry "cat - | pacat --server 127.0.0.1 --playback"

Obviamente, altere o endereço IP ( 192.168.1.104 ), o nome de usuário ( pi ) e a senha ( raspberry ) para corresponder à sua configuração.

4) Salve o arquivo como audio2rpi.bat na mesma pasta em que você extraiu o LineInCode

Agora, sempre que quiser transmitir o áudio do PC do Windows para o Raspberry Pi, basta clicar duas vezes no arquivo audio2rpi.bat.


Crédito por estas instruções: http://ubuntuforums.org/showthread.php?t=1121603

xfx
fonte
Obrigado, vou tentar! também posso usar o pulseaudio para transmitir a partir de um smartphone? Obrigado
Jerome
@ Jerome Essa deve ser outra pergunta que você faz neste site.
syb0rg
Qual sistema operacional você está executando no seu Pi? Estou executando uma nova instalação do Raspbmc e, seguindo estas instruções, parece que o dispositivo foi bloqueado. Ainda bem que uma reformatação é tão fácil ...
gillonba
Eu tentei estas instruções em vários lançamentos Raspbian.
Xfx
Interessado em saber qual endereço IP estamos inserindo no carregamento padrão do módulo config tcp. Estou experimentando uma reprodução um pouco complicada por meio de conexão sem fio, mas sem falhas por fio, interessante porque os nethogsrelatórios são usados ​​apenas 13 KB / s.
M1ke
4

Eu escrevi uma pequena entrada no blog sobre como eu consegui trabalhar com o PulseAudio no PC e o Raspbmc no Raspberry Pi - usando streaming DLNA / UPnP. Está aqui: http://westmarch.sjsoft.com/2014/04/streaming-audio-linux-to-raspbmc/ . Espero que ajude. Há um pouco de atraso nos buffers XBMC - então isso provavelmente não será ótimo para jogos ou qualquer coisa, mas funciona bem para música.

É um conjunto bastante longo de instruções - daí o link aqui, mas aqui está um resumo da opção que funcionou para mim, usando DLNA / UPnP:

  • apt-get install rygel
  • Abra as Preferências do PulseAudio e em Servidor de rede, marque Disponibilizar dispositivos de som locais como DLNA / UPnP Media Server e Criar dispositivo de áudio separado para streaming DLNA / UPnP
  • Edite a configuração de Rygel em /etc/rygel.confou $HOME/.config/rygel.confe configure-a para publicar usando GstLaunch(veja a configuração abaixo)
  • Vá ao seu Gerenciador de arquivos XBMC, procure uma nova fonte, selecione Dispositivos UPnP e você verá o Gst Launch como uma opção.
  • Então você deve poder dizer ao XBMC para reproduzir áudio desse fluxo

Aqui está a configuração para Rygel usar GstLaunch:

[GstLaunch]
enabled=true
launch-items=mypulseaudiosink
mypulseaudiosink-title=Audio on @HOSTNAME@
mypulseaudiosink-mime=audio/flac
mypulseaudiosink-launch=pulsesrc device=upnp.monitor ! flacenc
Matt Hampton
fonte
Você poderia incluir um conjunto simplificado de instruções em seu blog, caso algo aconteça no futuro?
Fred
4

Queria fazer isso sozinho no Windows7 -> RaspberryPi (OpenElec) e tropeçou na sua pergunta. Depois de algumas pesquisas, ainda não encontrei uma solução satisfatória para o OpenElec, mas tinha informações suficientes para criar uma que é muito simples e realmente funciona com alta qualidade e apenas com atraso de aproximadamente 1 segundo!

Você precisa:

  1. VLC Media Player (usei o Rincewind v2.1.3 no meu Win7 x64)
  2. Uma placa de som que fornece um dispositivo de gravação "Stereo Mix" (tive a sorte de ter um integrado)
  3. Um Raspberry Pi (eu uso o OpenElec 4.0.5, embora deva funcionar para o XBMC em geral)

Nota: Se você não possui uma placa de som compatível com isso, tente usar o VAC ( http://www.virtualaudiocable.net/ ), embora eu esteja lhe dizendo que não funcionou corretamente para mim, baixa qualidade de áudio e buffer problemas todo o caminho ... mas talvez seja apenas eu.

Passo 1)

Crie um arquivo em lote que inicie um serviço de streaming http VLC em segundo plano e capture o áudio do dispositivo de gravação "Stereo Mix":

@echo off

set vlc="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
start "" %vlc% --qt-start-minimized dshow:// :dshow-vdev=none :dshow-adev="Stereo Mix (Realtek High Defini" :live-caching=10 :sout=#transcode{vcodec=none,acodec=vorb,ab=500,channels=2,samplerate=44100}:http{dst=:8080/audiostream.ogg} :sout-keep

Notas:

  1. Talvez você precise alterar o dispositivo de gravação, se o seu tiver um nome diferente, usei o Audacity ( http://audacity.sourceforge.net/ ) para verificar os nomes dos meus dispositivos de captura, pois já o instalei
  2. Sim, a taxa de bits do áudio é muito alta (máximo para Vorbis), mas quanto maior a taxa de bits, mais rápido o buffer é preenchido e, portanto, menor o atraso :-) (você não pode alterar a explicidade do tamanho do buffer da música no XBMC, eu uso 5 MB buffer no meu em geral)
  3. Eu tentei FLAC, MP3 e até WAV e, além do fato de que apenas MP3 e Vorbis funcionavam com o meu Pi, tive o tempo de carregamento mais rápido no Pi (basicamente instantaneamente) e o menor atraso com o Vorbis

Passo 2)

Navegar para

\\ rapsberrypi \ Dados do usuário \ playlists \ music

e crie um arquivo .strm com um nome de sua escolha (eu chamei mine VLC.strm), que contém o link simples para o seu fluxo VLC: (altere o IP para o IP do seu PC: p)

http://192.168.0.1:8080/audiostream.ogg

Etapa 3)

Agora você pode definir o dispositivo de áudio capturado pelo "Stereo Mix" como padrão nas configurações de som do Windows ou abrir um player como o VLC e usar manualmente o dispositivo não padrão para reproduzir música no seu RaspberryPi:

Abra o seu VLC (além do minimizado na bandeja que está transmitindo seu "Stereo Mix") e execute as seguintes etapas:

  1. Ferramentas -> Preferências
  2. Áudio
  3. Módulo de saída: "Saída de áudio WaveOut"
  4. Dispositivo: - seu dispositivo (analógico) capturado pelo dispositivo de gravação "Stereo Mix" -
  5. Salve 
  6. Reinicie o VLC
  7. Tocar música

Passo 4)

No seu RaspberryPi:

  1. No XBMC, navegue para Música -> Listas de reprodução
  2. Selecione VLC.strm (ou o que você chamou)
  3. APROVEITE A MÚSICA!

Solução de problemas

Se você tiver problemas para fazer o seu "Stereo Mix" funcionar ou capturar, brinque primeiro no Windows, por exemplo, gravando-o com o Audacity e tentando algumas sugestões de fórum como:

este:

http://www.howtogeek.com/howto/39532/how-to-enable-stereo-mix-in-windows-7-to-record-audio/

ou este:

http://www.sevenforums.com/sound-audio/104497-stereo-mix-enabled-but-no-sound.html

Certo, digitando o suficiente por hoje, espero que isso tenha sido útil para alguém!

BR, Deads

Homem morto
fonte
3

A solução "LineInCode" descrita aqui funciona - mas o som é terrível por wifi. A solução VLC fornecida acima também funciona - mas é preciso clicar muito. Combinei ambos em um arquivo em lotes que iniciaria o VLC como uma serpentina no meu PC e o mpg123 como um "ouvinte" no PI. Funciona como um encanto para mim. Você precisa ter o Plik na mesma pasta (nós o usamos como ssh-client). Eu uso esse script a partir de hoje para ouvir mp3s no meu laptop, enquanto a saída de som é o pi:

            REM This is fischteich's start_sound.bat v 0.3
            @echo off

            set vlc="C:\Program Files (x86)\VideoLAN\VLC\vlc.exe"
            set ssh-login=YOURLOGIN
            set ssh-pw=YOURPW
            set this-machine-ip=192.168.XXX.XXX
            set pi-ip=192.168.XXX.XXX
            set use-port=5001

            set start-string= --sout-keep --sout=#transcode{vcodec=none,acodec=mp3,ab=192,channels=2,samplerate=44100}:http{mux=mp3,dst=:%use-port%/}

            REM Start VLC ready for files to play
            @start "vlc" %vlc% %start-string%
            REM Start playback via mpg123 on the Pi!
            plink %pi-ip% -l %ssh-login% -pw %ssh-pw% "mpg123 http://%this-machine-ip%:%use-port%"
leosok
fonte
1

Uma maneira de conseguir isso seria instalar o Volumio OS no Raspberry PI ( https://volumio.org ), seguindo as instruções fornecidas lá. Essa distribuição inclui um receptor ShairPort que permite que dispositivos Apple transmitam áudio para ele. Como alternativa, acho que você pode instalar o Shairport na distribuição de sua escolha.

No seu PC com Windows, instale o tuneblade ( http://tuneblade.com ), cuja versão gratuita permite transmitir o áudio do seu computador ao ShairPort no seu raspberry pi. Também funciona bem com o vlc para eliminar o atraso de áudio ao visualizar vídeos etc.

Isso funciona para mim - espero que funcione para você também.

rdt25
fonte
Bem-vindo ao Raspberry Pi Stack Exchange! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
RPiAwesomeness
Tuneblade também trabalha com Pi MusicBox
entrada
0

Até onde eu sei, ainda não há solução. Existe um padrão / tecnologia chamado AVB, mas seu suporte planejado para 802.11 é limitado à sincronização de tempo.

themihai
fonte
-1

Você já tentou o streaming de áudio bluetooth simples usando um adaptador A2DP conectado ao seu aparelho de som? Usar um Raspberry Pi para fazer isso parece um exagero, embora eu admita a construção de um dispositivo de streaming de áudio bluetooth A2DP com um Raspberry Pi e um adaptador bluetooth USB barato.

G Ragib
fonte
É ótimo que você tenha construído um Raspi que possa transmitir A2DP, mas sua resposta não me ajuda ao mesmo, portanto, essa resposta não é uma resposta.
Mark Booth
Nenhum pi necessário. Emparelhe o seu PC com um receptor Bluetooth e envie sons diretamente do seu PC para o esterol. O receptor Bluetooth deve aparecer como uma saída de som no seu PC.
22620 Christopher