¿Cómo transmitir mi salida de audio GNU / Linux a dispositivos Android a través de WI-FI?

39

Quiero transmitir mi salida de audio a través de la red (Wi-Fi) a mis dispositivos Android. No estoy buscando una solución de transmisión de música / video, pero transmitiría cualquier salida de audio de mi escritorio GNU / Linux a mi Android como un auricular bluetooth.

Mi escritorio GNU / Linux es Debian Wheezy y el sonido es proporcionado por pulseaudio.

Probé el módulo raop de Pulseaudio (y lo habilité en paprefs) + la aplicación AirBuddle de Android, pero el audio no se transmite (parece que pulseaudio se conecta a AirBuddle, pero el sonido no se reproduce, hay una falla de conexión en algunos softwares, en algunos otros softwares el sonido está pegado).

semente
fuente

Respuestas:

27

Hay una solución muy simple porque PulseAudio ya tiene todas las herramientas necesarias.

  1. Obtenga el nombre de su dispositivo fuente con el comando pactl list | grep Name
  2. Cree el siguiente script llamado pashare:

    #!/bin/sh
    case "$1" in
      start)
        $0 stop 
        pactl load-module module-simple-protocol-tcp rate=48000 format=s16le channels=2 source=<source_name_here> record=true port=8000
        ;;
      stop)
        pactl unload-module `pactl list | grep tcp -B1 | grep M | sed 's/[^0-9]//g'`
        ;;
      *)
        echo "Usage: $0 start|stop" >&2
        ;;
    esac
    
  3. Realice algunas comprobaciones y preparativos (para permitir la ejecución del script y verificar si el puerto se abrió correctamente):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. Descargue e instale PulseDroid.apk

  5. Inicie la aplicación en su teléfono; configura la dirección IP para tu computadora y el puerto para 8000.

PD: También puede consultar esta página Wiki para obtener información general sobre la transmisión en red de Pulseaudio, y esta página Wiki sobre transmisión RTP. No esperes demasiado de la transmisión de audio sin formato a través de WiFi; Se necesitan enormes cantidades de ancho de banda. Incluso con un enrutador / AP inalámbrico de alta gama con una señal potente, no he podido obtener más que un sonido tartamudo. Su mejor opción es probablemente configurar un servidor de medios adecuado (como Rygel, que funciona bien con Pulseaudio) para transcodificar el audio sin formato a algo como MP3 y transmitirlo en su lugar.

AlexAndersan
fuente
77
Esto también funciona perfectamente con esta aplicación de Android: Simple Protocol Player play.google.com/store/apps/… Sin embargo, tenga en cuenta que este valor predeterminado es rate = 44100, por lo que es posible que desee usarlo.
Jannes
1
Solo para aclarar: la salida de pactl list sources short es mejor para encontrar el número del parámetro fuente.
wolfmanx
44
El uso pactl list | grep "Monitor Source"muestra fuentes más relevantes para mí.
markroxor
18

Puede usar VLC para servir una transmisión MP3 de la salida de pulseaudio a través de HTTP.
La principal ventaja es que no necesita instalar ningún software especial en su dispositivo remoto, un navegador web (o reproductor de música) es todo lo que necesita para reproducir la transmisión. La desventaja es que solo es audio, unos pocos segundos de retraso lo hacen inútil para videos

  1. Encuentra el nombre de salida de pulseaudio con:

    pactl list | grep "Monitor Source" 
    
  2. Inicie el servidor http VLC, reemplazando XXXX por su nombre de salida:

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. Si es necesario, encuentre su dirección IP local con ifconfig

  4. En su dispositivo remoto, apunte el navegador (o la aplicación de transmisión de audio) a:

    http://your.local.ip.address:8888/pc.mp3
    

Nota: La secuencia no se ve afectada por el volumen configurado en el servidor, a menos que lo silencie por completo. Si es necesario, puede mantener el nivel un poco por encima de 0 para escuchar solo el dispositivo remoto.


Los primeros dos pasos combinados en uno por polynomial_donut :

cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
wilks
fuente
1
¡increíble! Hay un retraso de 3 segundos, pero estoy contento con este pequeño truco hasta que encuentre ese maldito cable. Probablemente tendré que comprar otro ...
Slabo
Buen punto de @Slabo, por alguna razón asumí erróneamente que el OP solo quería transmitir música. Edité mi respuesta
wilks
2
Una línea en lugar de las dos primeras líneas: cvlc -vvv pulse://$(pactl list | grep "Monitor Source" | awk '{print $3}') --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
polynomial_donut
La transmisión ES directamente afectada por la configuración de volumen para mí. Solo conecto mis auriculares para evitar que el sonido provenga de la computadora portátil.
Rolf
Por cierto, ¿cómo evito que el retraso dure como media hora?
Rolf
9

Para transmitir la salida de audio a través de wifi a su teléfono Android, debe instalar el software del servidor, que envía audio, en la PC y el software del cliente en el dispositivo Android. Las opciones disponibles son

Altavoz inalámbrico de audio WiFi

Ejecute la aplicación WiFi Audio Android y presione inicio, verá la dirección IP del dispositivo móvil en la parte inferior después de ejecutar la aplicación Windows / Linux y coloque la dirección IP del dispositivo móvil en el campo de dirección IP y luego presione iniciar en la aplicación de PC. Ahora todo el audio que sale de la PC se enviará al dispositivo móvil y escuchará el audio en el dispositivo móvil.
Descargar

SoundWire

Transmita de forma inalámbrica cualquier música o audio desde su PC a su teléfono Android, tableta u otras PC
Página de inicio Consulte también

Otros enlaces útiles
XBMC android SE

totti
fuente
SoundWire se retrasa por 1-2 segundos
Gaurav Gupta
@gauravgupta No hay retrasos si elige un tamaño de búfer más pequeño. Intenta también usar la compresión. Esto me funcionó muy bien.
Raacer
¿Puedes poner el enlace de descarga de la aplicación para PC de WiFi Audio aquí?
visto el
1
WiFi Audio Wireless Speaker fue eliminado de github y los usuarios informan que la versión compilada en los foros es un malware. ¡Ten cuidado! Soundwire también parece sospechoso, por la forma en que se distribuye.
Genom
0

Para aquellos de ustedes que usan Soundwire y envían wifi desde su computadora portátil o PC, usando ifconfig ASEGÚRESE DE USAR LA DIRECCIÓN IP CORRECTA. Esto todavía funciona hasta el día de hoy, pero la mayoría de las distribuciones de Linux necesitan un segundo adaptador wifi para enviar el wifi y debes usar el que está conectado a tu Android. no el que recibe internet. El que lo envía.

es decir, -> Si está utilizando el adaptador wifi "A" para conectarse a Internet y "B" para enviar wifi desde "A", conecte SoundWire en Android a "B" NO "A".

SoundWire NO se conectará o transmitirá si se conecta al adaptador que no envía el wifi, por lo tanto, ingrese su dirección IP en sus aplicaciones de Andoroid en consecuencia, utilizando el comando de terminal ifconfig en consecuencia.

Sí, hay un retraso, pero esta aplicación, SoundWire, es el sistema más simple "multi-connect to ip and forget" que existe. No hay menús locos para pasar. Y sí, acepta más de una conexión. Usé 2 el otro día. Añade el número de dispositivos conectados a él en la ventana principal del dispositivo que envía la transmisión.

Utilizando esto personalmente como un sistema de radio wifi de varias habitaciones / corta distancia en mi casa hasta el día de hoy.

Disfrutar.

Roiikka
fuente
-4

Wow esto es viejo ...

De todos modos, use VLC. Bastante GUI todo el camino.

  • Encienda VLC en su escritorio.
  • Haz clic en Stream, selecciona el archivo (agrega cuantos archivos quieras), haz clic en stream.
  • 'Siguiente' si todo es correcto.
  • Para Nuevo destino, seleccione "http" (o lo que quiera usar). Seleccione Mostrar localmente si también quiere reproducirlo en la máquina desde la que está transmitiendo. Los siguientes diálogos se explican por sí mismos.

Enciende VLC en tu dispositivo Android. Presiona el ícono al lado del botón de búsqueda (la flecha apunta al punto). escriba http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/para mí esto fuehttp://xxx.ca:8080/

Probado y funcionando. Ahora, ¿podría uno hacer esto en la antigüedad del 9 y 13 de junio? Tal vez, pero soy demasiado vago para verificar los registros de comunicaciones de VLC;)

Zeroedout
fuente
3
No está buscando una solución de transmisión de música / video.
Cristian Ciupitu