Come trasmettere in streaming la mia uscita audio GNU / Linux su dispositivi Android tramite WI-FI?


39

Voglio trasmettere in streaming la mia uscita audio sulla rete (Wi-Fi) ai miei dispositivi Android. Non sto cercando una soluzione di streaming di musica / video, ma trasmetterei in streaming qualsiasi uscita audio del mio desktop GNU / Linux sul mio lavoro Android come una cuffia bluetooth.

Il mio desktop GNU / Linux è Debian Wheezy e il suono è fornito da pulseaudio.

Ho provato il modulo raop di Pulseaudio (e l'ho abilitato su paprefs) + l'app AirBuddle di Android, ma l'audio non è in streaming (pulseaudio sembra connesso ad AirBuddle, ma il suono non viene riprodotto, in alcuni software si verifica un errore di connessione altri software il suono è bloccato).

Risposte:


27

C'è una soluzione molto semplice perché PulseAudio ha già tutti gli strumenti necessari.

  1. Ottieni il nome del tuo dispositivo sorgente con il comando pactl list | grep Name
  2. Creare il seguente script denominato 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. Effettuare alcuni controlli e preparativi (per consentire l'esecuzione dello script e verificare se la porta è stata aperta correttamente):

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

  5. Avvia l'app sul tuo telefono; impostare l'indirizzo IP sul computer e la porta su 8000.

PS Puoi anche controllare questa pagina Wiki per informazioni generali sullo streaming di rete Pulseaudio e questa pagina Wiki sullo streaming RTP. Non aspettarti troppo dallo streaming di audio non elaborato tramite WiFi; ci vogliono enormi goccioline di larghezza di banda. Anche con un router / AP wireless di fascia alta con un segnale potente, non sono stato in grado di ottenere qualcosa di più che balbettare da esso. La tua scommessa migliore è probabilmente quella di configurare un server multimediale adeguato (come Rygel, che funziona bene con Pulseaudio) per transcodificare l'audio grezzo in qualcosa come MP3 e trasmetterlo invece.


7
Funziona perfettamente anche con questa app per Android: Simple Protocol Player play.google.com/store/apps/… Nota che questo valore predefinito è = 44100, quindi potresti volerlo usare.
Jannes,

1
Giusto per chiarire: l'output di pactl list sources short è meglio trovare il numero del parametro source.
Wolfmanx,

4
l'utilizzo pactl list | grep "Monitor Source"mostra fonti più pertinenti per me.
markroxor,

18

Puoi usare VLC per servire un flusso MP3 dell'output di pulseaudio via HTTP.
Il vantaggio principale è che non è necessario installare alcun software speciale sul dispositivo remoto, è sufficiente un browser Web (o lettore musicale) per riprodurre lo streaming. Il rovescio della medaglia è che è solo audio, alcuni secondi di ritardo lo rendono inutile per i video

  1. Trova il nome dell'output di pulseaudio con:

    pactl list | grep "Monitor Source" 
    
  2. Avviare il server http VLC, sostituendo XXXX con il nome dell'output:

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. Se necessario, trova il tuo indirizzo IP locale con ifconfig

  4. Sul dispositivo remoto, punta il browser (o l'app di streaming audio) su:

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

Nota: lo streaming non è influenzato dal volume impostato sul server, a meno che non venga completamente disattivato. Se necessario, è possibile mantenere il livello leggermente al di sopra di 0 per ascoltare solo il dispositivo remoto.


I primi due passaggi combinati in uno da 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}'

1
eccezionale! C'è un ritardo di 3 secondi ma sono contento di questo piccolo trucco finché non trovo quel dannato cavo. Probabilmente dovrò comprarne un altro ...
Slabo,

@Slabo buon punto, per qualche ragione avevo erroneamente supposto che l'OP volesse solo trasmettere musica in streaming. Modificato la mia risposta
Wilks

2
Una riga anziché le prime due righe: 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,

Il flusso è direttamente influenzato dall'impostazione del volume per me. Collego solo gli auricolari per impedire che il suono provenga dal laptop.
Rolf

A proposito, come posso evitare che il ritardo duri circa mezz'ora?
Rolf

9

Per trasmettere in streaming audio tramite Wi-Fi al tuo telefono Android devi installare il software server, che invia audio, su PC e software client su dispositivo Android. Le opzioni disponibili sono

Altoparlante wireless audio WiFi

Avvia WiFi Audio Android App e premi start, vedrai l'indirizzo IP del dispositivo mobile nella parte inferiore dopo che esegui l'applicazione Windows / Linux e inserisci l'indirizzo IP del dispositivo mobile nel campo dell'indirizzo IP, quindi premi start sull'applicazione PC. Ora tutto l'audio in uscita dal PC verrà inviato al dispositivo mobile e l'audio verrà riprodotto sul dispositivo mobile.
Scaricare

SoundWire

Trasmette in modalità wireless musica o audio dal tuo PC al tuo telefono Android, tablet o Home page di altri PC
Vedi anche

Altri link utili
XBMC android SE


SoundWire è in ritardo di 1-2 secondi
Gaurav Gupta,

@gauravgupta Nessun ritardo se si sceglie una dimensione del buffer inferiore. Prova anche a usare la compressione. Questo ha funzionato molto bene per me.
raacer,

puoi inserire qui il link per il download delle applicazioni PC di WiFi Audio?
visto il

1
WiFi Audio Wireless Speaker è stato rimosso da github e la versione compilata nei forum viene segnalata dagli utenti come un malware. Stai attento! Anche il suono metallico sembra sospetto, dal modo in cui è distribuito.
Genom,

0

Per quelli di voi che usano Soundwire e inviano wifi dal proprio laptop o PC, usando ifconfig ASSICURARSI DI UTILIZZARE L'INDIRIZZO IP CORRETTO. Funziona ancora oggi, ma la maggior parte delle distro Linux ha bisogno di un secondo adattatore wifi per inviare il wifi e devi usare quello a cui è connesso il tuo Android. non quello che riceve Internet. Quello che lo sta inviando.

cioè -> Se si utilizza l'adattatore wifi "A" per connettersi a Internet e "B" per inviare il wifi da "A", quindi collegare SoundWire su Android a "B" NON "A".

SoundWire NON si connetterà o eseguirà lo streaming se ti connetti all'adattatore che non invia il wifi, quindi inserisci di conseguenza il tuo indirizzo IP nelle tue app Andoroid, usando il comando terminal ifconfig di conseguenza.

Sì, c'è un ritardo, ma questa app, SoundWire, è il più semplice sistema "multi-connessione per ip e dimenticare" là fuori. Nessun menu folle da passare. E sì, accetta più di una connessione. Ho usato 2 l'altro giorno. Aggiunge il numero di dispositivi ad esso collegati nella finestra principale del dispositivo che invia la trasmissione.

Usandolo personalmente come un sistema radio-wifi multi-room / a breve distanza al mio posto fino ad oggi.

Godere.


-4

Wow, questo è vecchio ...

Ad ogni modo, usa VLC. Belle GUI fino in fondo.

  • Avvia VLC sul desktop.
  • Premi Stream, seleziona il file (aggiungi quanti file vuoi), premi stream.
  • "Avanti" se è tutto corretto.
  • Per Nuova destinazione seleziona "http" (o qualunque cosa tu voglia usare). Selezionare Visualizza localmente se si desidera riprodurlo anche sul dispositivo da cui si esegue lo streaming. I prossimi dialoghi sono tutti autoesplicativi.

Avvia VLC sul tuo dispositivo Android. Premi l'icona accanto al pulsante di ricerca (la freccia che punta al punto). digitare http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/per me questo erahttp://xxx.ca:8080/

Testato e funzionante. Ora, si potrebbe fare questo nell'antichità del 9 giugno 1313? Forse, ma sono troppo pigro per controllare i log di commit di VLC;)


3
Non è alla ricerca di una soluzione di streaming di musica / video.
Cristian Ciupitu,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.