Usando Pi para transmitir toda la salida de audio de mi PC a mi estéreo

37

Mi problema es bastante simple, pero no he podido encontrar una solución satisfactoria.

Básicamente, quiero que mi Raspberry Pi se conecte a mi estéreo y luego reproduzca cualquier salida de audio de mi computadora a través de wifi al PI.

¿Hay alguna manera de hacer esto fácilmente, sin tener que usar jugadores especiales? Es decir, ¿hay alguna forma de que la PC reconozca el Pi como "altavoces"?

Me gustaría escuchar cada sonido en mi PC en el estéreo, es decir. Juegos, música, sonidos del sistema, notificaciones, videos de youtube, etc.

¡Muchas gracias!

Jerome
fuente

Respuestas:

24

Si está ejecutando Linux en su PC, entonces esto es perfectamente factible, siempre que instale y configure correctamente PulseAudio en ambos, su Raspberry Pi y su PC con Linux.

Si su PC está ejecutando Windows ... Salte al final de la publicación (que acabo de actualizar).

Otra opción sería usar PulseAudio como un receptor / cliente AirPlay, pero que yo sepa, esto no es posible.

Pero, si está utilizando Linux, siga leyendo:

Nota # 1: PulseAudio a través de WiFi funcionará sin problemas en algunos enrutadores, pero fallará en otros.

Nota # 2: Las siguientes instrucciones son de una conversación que varios usuarios de Raspberry Pi (incluido yo mismo) mantuvimos sobre este mismo tema .

1) Instala PulseAudio en tu Raspberry Pi

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

2) Asegúrese de que PulseAudio se inicie automáticamente:

sudo nano /etc/default/pulseaudio

Busque la entrada PULSEAUDIO_SYSTEM_START y cámbiela a 1 para que parezca PULSEAUDIO_SYSTEM_START = 1

3) Configure PulseAudio para trabajar en la red:

sudo nano /etc/pulse/system.pa

Agregue las siguientes líneas:

módulo de carga módulo-protocolo-nativo-tcp auth-ip-acl = 127.0.0.1; 192.168.1.0/24

módulo de carga módulo-zeroconf-publicar

4) Reinicia tu Raspberry Pi:

sudo reboot

5) Ahora, en su PC con Linux, instale paprefs . Si su distribución de Linux está basada en Debian (como Ubuntu, Mint, etc.) puede usar este comando:

sudo apt-get install paprefs

6) Ejecute paprefs y, en Acceso a la red, habilite Haga que los dispositivos de sonido de la red PulseAudio estén disponibles localmente

7) En Servidor de red, habilite Habilitar acceso de red a dispositivos de sonido locales y marque ambas opciones (Esto probablemente no sea necesario, a menos que también quiera usar su caja Linux como servidor / receptor)

8) En Multicas / RTP habilite ambas opciones

9) Verifique sus dispositivos de salida disponibles (use su aplicación de mezcla / audio de distribución de Linux). Su Raspberry Pi aparecerá (debería) aparecer en la lista; selecciónelo y todo lo que se reproduce en su caja de Linux será redirigido a la Raspberry Pi.

Si su Raspberry Pi aún no está disponible, intente reiniciar su PC con Linux.


ACTUALIZACIÓN: Envío de todo el audio de Windows a la Raspberry Pi

Aún deberá seguir las instrucciones anteriores para instalar y configurar PulseAudio en su Raspberry Pi.

Ahora, esto es lo que deberá hacer para Windows:

1) Descargue la última versión de LineInCode

2) Descomprima el archivo descargado

2) Descargue el Plink de PuTTY y coloque el archivo plink.exe en la misma carpeta donde extrajo LineInCode

3) Abra el Bloc de notas y pegue el siguiente 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"

Por supuesto, cambie la dirección IP ( 192.168.1.104 ), el nombre de usuario ( pi ) y la contraseña ( frambuesa ) para que coincida con su configuración.

4) Guarde el archivo como audio2rpi.bat en la misma carpeta donde extrajo LineInCode

Ahora, cuando quiera transmitir el audio de su PC con Windows a su Raspberry Pi, simplemente haga doble clic en el archivo audio2rpi.bat.


Crédito por estas instrucciones: http://ubuntuforums.org/showthread.php?t=1121603

xfx
fuente
Gracias, ¡lo intentaré! ¿Puedo usar pulseaudio para transmitir desde un teléfono inteligente también? Gracias
Jerome
@ Jerome Esa debería ser otra pregunta que hagas en este sitio web.
syb0rg
¿Qué sistema operativo está ejecutando en su Pi? Estoy ejecutando una nueva instalación de Raspbmc y, siguiendo estas instrucciones, parece haber bloqueado el dispositivo. Es bueno que un reformateo sea tan fácil ...
gillonba
He intentado estas instrucciones en varios lanzamientos de Raspbian.
xfx
Interesado en saber qué dirección IP estamos ingresando en la carga predeterminada del módulo config tcp. Estoy experimentando una reproducción ligeramente irregular en la conexión inalámbrica, pero impecable en la conexión por cable, interesante ya nethogsque solo se utilizan informes de 13 KB / s.
M1ke
4

Escribí una pequeña entrada de blog sobre cómo conseguí que esto funcionara con PulseAudio en la PC y Raspbmc en la Raspberry Pi, usando la transmisión DLNA / UPnP. Está aquí: http://westmarch.sjsoft.com/2014/04/streaming-audio-linux-to-raspbmc/ . Espero que ayude. Hay un pequeño retraso mientras que las memorias intermedias XBMC, por lo que probablemente esto no sea excelente para los juegos ni nada, pero funciona muy bien para la música.

Es un conjunto bastante largo de instrucciones, de ahí el enlace aquí, pero aquí hay un resumen de la opción que funcionó para mí, usando DLNA / UPnP:

  • apt-get install rygel
  • Abra las preferencias de PulseAudio y, en Servidor de red, marque Hacer que los dispositivos de sonido locales estén disponibles como Servidor multimedia DLNA / UPnP y Cree un dispositivo de audio separado para la transmisión DLNA / UPnP
  • Edite la configuración de Rygel en /etc/rygel.confo $HOME/.config/rygel.conf, y configúrela para publicar usando GstLaunch(vea la configuración a continuación)
  • Vaya a su Administrador de archivos XBMC, busque una nueva fuente, seleccione Dispositivos UPnP y debería ver Gst Launch como una opción
  • Entonces deberías poder decirle a XBMC que reproduzca audio de esa transmisión

Aquí está la configuración para que Rygel use 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
fuente
¿Podría incluir un conjunto simplificado de instrucciones de su publicación de blog en caso de que algo le ocurra en el futuro?
Fred
4

Quería hacerlo yo mismo desde Windows7 -> RaspberryPi (OpenElec) y tropecé con su pregunta. Después de bastante investigación, todavía no encontré una solución satisfactoria para OpenElec, pero tenía suficiente información para encontrar una que sea muy simple y que realmente funcione con alta calidad y solo aproximadamente ~ 1 segundo de retraso.

Necesitas:

  1. VLC Media Player (utilicé v2.1.3 Rincewind en mi Win7 x64)
  2. Una tarjeta de sonido que proporciona un dispositivo de grabación "Stereo Mix" (tuve la suerte de tener una a bordo)
  3. Una Raspberry Pi (uso OpenElec 4.0.5, aunque debería funcionar para XBMC en general)

Nota: Si no tiene una tarjeta de sonido que lo admita, puede intentar usar VAC ( http://www.virtualaudiocable.net/ ), aunque le digo que no funcionó correctamente para mí, mala calidad de audio y buffer problemas todo el camino ... pero tal vez solo soy yo.

Paso 1)

Cree un archivo por lotes que inicie un servicio de transmisión VLC http en segundo plano y capture audio del dispositivo de grabación "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. Es posible que tenga que cambiar el dispositivo de grabación si el suyo tiene un nombre diferente. Utilicé Audacity ( http://audacity.sourceforge.net/ ) para verificar los nombres de mis dispositivos de captura ya que ya lo tenía instalado.
  2. Sí, la tasa de bits de audio es muy alta (máxima para Vorbis), pero cuanto mayor sea la tasa de bits, más rápido se llenará el búfer y, por lo tanto, más corto será el retraso :-) (no puede cambiar la explicidad del tamaño del búfer para la música en XBMC, uso 5MB tampón en el mío en general)
  3. Probé FLAC, MP3 e incluso WAV y, aparte del hecho de que solo MP3 y Vorbis funcionaban con mi Pi, tuve el tiempo de carga más rápido en el Pi (básicamente al instante) y el menor retraso con Vorbis

Paso 2)

Navegar a

\\ rapsberrypi \ Userdata \ playlists \ music

y cree un archivo .strm con el nombre de su elección allí (llamé al mío VLC.strm) que contiene el enlace simple a su flujo VLC: (cambie la IP a IP de su PC: p)

http://192.168.0.1:8080/audiostream.ogg

Paso 3)

Ahora puede configurar el dispositivo de audio capturado por "Stereo Mix" como predeterminado en la configuración de sonido de Windows o abrir un reproductor como VLC y utilizar manualmente el dispositivo no predeterminado para reproducir música en su RaspberryPi:

Abra su VLC (además del minimizado en su bandeja que transmite su "Stereo Mix") y realice los siguientes pasos:

  1. Herramientas -> Preferencias
  2. Audio
  3. Módulo de salida: "Salida de audio WaveOut"
  4. Dispositivo: - su dispositivo (analógico) capturado por el dispositivo de grabación "Stereo Mix" -
  5. Salvar
  6. Reiniciar VLC
  7. Reproducir música

Etapa 4)

En tu RaspberryPi:

  1. En XBMC, vaya a Música -> Listas de reproducción
  2. Seleccione VLC.strm (o como lo llame)
  3. ¡DISFRUTA LA MÚSICA!

Solución de problemas

Si tiene problemas para hacer que su "Mezcla estéreo" funcione o capture, primero juegue en Windows grabándolo con Audacity y probando algunas sugerencias del foro como:

éste:

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

o este:

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

Bien, suficiente escribir por hoy, ¡espero que esto haya sido útil para alguien!

BR, muertos

Hombre muerto
fuente
3

La solución "LineInCode" descrita aquí funciona, pero el sonido es terrible a través de wifi. La solución VLC proporcionada anteriormente también funciona, pero necesita muchos clics. Combiné ambos en un archivo por lotes que iniciaría VLC como un transmisor en mi PC y mpg123 como un "listner" en el PI. Funciona como un encanto para mí. Necesita tener Plik en la misma carpeta (lo usamos como ssh-client). Utilizo este script a partir de hoy para escuchar mp3 en mi computadora portátil, mientras que la salida de sonido es 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
fuente
1

Una forma de lograr esto sería instalar el sistema operativo Volumio en el Raspberry PI ( https://volumio.org ) y seguir las instrucciones que se dan allí. Esta distribución incluye un receptor ShairPort que permite a los dispositivos Apple transmitir audio a él. Alternativamente, supongo que podría instalar Shairport en la distribución que elija.

En su PC con Windows, instale tuneblade ( http://tuneblade.com ), cuya versión gratuita le permite transmitir el audio de su computadora al ShairPort en su raspberry pi. También funciona bien con vlc para eliminar el retraso de audio al ver videos, etc.

Esto funciona para mí, espero que también funcione para usted.

rdt25
fuente
¡Bienvenido a Raspberry Pi Stack Exchange! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
RPiAwesomeness
Tuneblade también funciona con Pi MusicBox
entrada
0

Por lo que sé, no hay solución (todavía). Existe un estándar / tecnología llamado AVB pero su soporte planeado para 802.11 se limita a la sincronización de tiempo.

themihai
fuente
-1

¿Has probado la transmisión de audio bluetooth simple usando un adaptador A2DP conectado a tu estéreo? Usar un Raspberry Pi para hacer eso parece excesivo, aunque admitiré haber construido un dispositivo de transmisión de audio bluetooth A2DP con un Raspberry Pi y un adaptador bluetooth USB barato.

G Ragib
fuente
Es genial que hayas construido un Raspi que pueda transmitir A2DP, pero tu respuesta no me ayuda a lo mismo, por lo que esta respuesta no es una respuesta.
Mark Booth
No se necesita pi. Empareje su PC con un receptor Bluetooth y envíe el sonido directamente desde su PC a su esterol. El receptor Bluetooth debería aparecer como salida de sonido en su PC.
Christopher Biggs