Wie streame ich meine GNU / Linux-Audioausgabe über WI-FI auf Android-Geräte?

39

Ich möchte meine Audioausgabe über das Netzwerk (Wi-Fi) auf meine Android-Geräte streamen. Ich suche keine Musik- / Video-Streaming-Lösung, aber ich würde jeden Audio-Ausgang meines GNU / Linux-Desktops wie einen Bluetooth-Kopfhörer auf mein Android-Gerät streamen.

Mein GNU / Linux-Desktop ist Debian Wheezy und der Sound wird von pulseaudio bereitgestellt.

Ich habe das Raop-Modul von Pulseaudio ausprobiert (und es auf paprefs aktiviert) + die AirBuddle-App von Android, aber das Audio wird nicht gestreamt (Pulseaudio-Geräte stellen eine Verbindung zu AirBuddle her, aber der Ton wird nicht wiedergegeben, in einigen Programmen ist eine Verbindungsstörung aufgetreten Bei anderen Programmen bleibt der Ton hängen.

semente
quelle

Antworten:

27

Es gibt eine sehr einfache Lösung, da PulseAudio bereits über alle erforderlichen Tools verfügt.

  1. Rufen Sie den Namen Ihres Quellgeräts mit dem Befehl ab pactl list | grep Name
  2. Erstellen Sie das folgende Skript mit dem Namen 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. Führen Sie einige Überprüfungen und Vorbereitungen durch (um die Skriptausführung zu ermöglichen und zu überprüfen, ob der Port erfolgreich geöffnet wurde):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. Laden Sie PulseDroid.apk herunter und installieren Sie es

  5. Starten Sie die App auf Ihrem Handy. Stellen Sie die IP-Adresse auf Ihren Computer und den Port auf ein 8000.

PS Sie können auch auf dieser Wiki-Seite allgemeine Informationen zum Pulseaudio-Netzwerk-Streaming und auf dieser Wiki-Seite zum RTP-Streaming nachlesen . Erwarten Sie nicht zu viel vom Streaming von Raw-Audio über WLAN. Es dauert enorme Mengen an Bandbreite. Selbst mit einem High-End-WLAN-Router / -AP mit einem starken Signal konnte ich nicht mehr als ruckeliges Audio herausholen. Am besten richten Sie einen geeigneten Media-Server ein (wie Rygel, der gut mit Pulseaudio zusammenarbeitet), um das Roh-Audio in MP3 umzuwandeln und stattdessen zu streamen.

AlexAndersan
quelle
7
Dies funktioniert auch perfekt mit dieser Android-App: Einfacher Protokoll-Player play.google.com/store/apps/… Beachten Sie, dass der Standardwert jedoch 44100 ist, sodass Sie diesen verwenden möchten.
Jannes
1
Nur zur Verdeutlichung: Die Ausgabe von pactl list sources short ist besser, um die Nummer des Quellparameters zu finden.
Wolfmanx
4
using pactl list | grep "Monitor Source"zeigt für mich relevantere Quellen.
Markroxor
18

Mit VLC können Sie einen MP3-Stream der pulseaudio-Ausgabe über HTTP bereitstellen.
Der Hauptvorteil ist, dass Sie keine spezielle Software auf Ihrem Remote-Gerät installieren müssen. Sie benötigen lediglich einen Webbrowser (oder einen Musik-Player), um den Stream abzuspielen. Der Nachteil ist, dass es sich nur um Audio handelt. Einige Sekunden Verzögerung machen es für Videos unbrauchbar

  1. Finden Sie den Ausgabenamen von pulseaudio mit:

    pactl list | grep "Monitor Source" 
    
  2. Starten Sie den VLC-HTTP-Server und ersetzen Sie XXXX durch Ihren Ausgabenamen:

    cvlc -vvv pulse://XXXX --sout '#transcode{acodec=mp3,ab=128,channels=2}:standard{access=http,dst=0.0.0.0:8888/pc.mp3}'
    
  3. Finden Sie bei Bedarf Ihre lokale IP-Adresse mit ifconfig

  4. Zeigen Sie auf Ihrem Remote-Gerät mit dem Browser (oder der Audio-Streaming-App) auf:

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

Hinweis: Der Stream wird nicht von dem auf dem Server festgelegten Volume beeinflusst, es sei denn, Sie schalten ihn vollständig stumm. Bei Bedarf können Sie den Pegel nur geringfügig über 0 halten, um nur das Remote-Gerät zu hören.


Die ersten beiden von polynomial_donut zu einem kombinierten Schritt :

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
quelle
1
genial! Es gibt eine Verzögerung von 3 Sekunden, aber ich bin glücklich mit diesem kleinen Hack, bis ich das verdammte Kabel finde. Ich werde wahrscheinlich noch einen kaufen müssen ...
Slabo
@ Slabo guter Punkt, aus irgendeinem Grund hatte ich fälschlicherweise angenommen, dass das OP nur Musik streamen wollte. Bearbeitet meine Antwort
Wilks
2
Ein Einzeiler anstelle der ersten beiden Zeilen: 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
Der Stream wird direkt von der Lautstärkeeinstellung für mich beeinflusst. Ich schließe einfach meine Kopfhörer an, um zu verhindern, dass der Ton vom Laptop kommt.
Rolf
Übrigens, wie verhindere ich, dass die Verzögerung eine halbe Stunde dauert?
Rolf
9

Um die Audioausgabe über WLAN auf Ihr Android-Handy zu streamen, müssen Sie die Serversoftware, die Audio sendet, auf dem PC und die Clientsoftware auf dem Android-Gerät installieren. Verfügbare Optionen sind

WiFi Audio Wireless Lautsprecher

Führen Sie die WiFi Audio Android App aus und klicken Sie auf Start. Die IP-Adresse des Mobilgeräts wird unten angezeigt, nachdem Sie die Windows / Linux-Anwendung ausgeführt und die IP-Adresse des Mobilgeräts in das Feld IP-Adresse eingegeben haben. Klicken Sie anschließend auf Start der PC-Anwendung. Jetzt werden alle vom PC ausgegebenen Audiodaten an das Mobilgerät gesendet und Sie hören Audiodaten auf dem Mobilgerät.
Herunterladen

SoundWire

Drahtlos übertragen keine Musik oder Audiodateien von Ihrem PC auf Ihr Android - Handy, Tablet oder andere PCs
Startseite ähnliche Produkte

Andere nützliche Links
XBMC android SE

Totti
quelle
SoundWire verzögert sich um 1-2 Sekunden
Gaurav Gupta
@gauravgupta Keine Verzögerung, wenn Sie eine kleinere Puffergröße wählen. Versuchen Sie auch, die Komprimierung zu verwenden. Das hat bei mir sehr gut geklappt.
Raacer
Können Sie hier den Link zum Herunterladen der PC-Anwendung von WiFi Audio einfügen?
am
1
WiFi Audio Wireless Speaker wurde von github entfernt und die kompilierte Version in den Foren wird von den Benutzern als Malware gemeldet. Achtung! Soundwire sieht auch von der Art und Weise, wie es verteilt wird, faul aus.
Genom
0

Wenn Sie Soundwire verwenden und WLAN von Ihrem Laptop oder PC aus senden, stellen Sie mit ifconfig sicher, dass Sie die richtige IP-Adresse verwenden. Dies funktioniert bis heute, aber die meisten Linux-Distributionen benötigen einen zweiten WLAN-Adapter, um das WLAN zu senden, und Sie müssen den verwenden, mit dem Ihr Android verbunden ist. nicht derjenige, der das Internet empfängt. Der, der es rausschickt.

dh -> Wenn Sie einen "A" -Wifi-Adapter zum Herstellen einer Verbindung zum Internet und "B" zum Senden von Wifi über "A" verwenden, verbinden Sie SoundWire unter Android mit "B" und nicht mit "A".

SoundWire wird NICHT verbunden oder gestreamt, wenn Sie eine Verbindung mit dem Adapter herstellen, der das WLAN nicht sendet. Geben Sie daher Ihre IP-Adresse entsprechend in Ihre Andoroid-App (s) ein, indem Sie den Terminalbefehl ifconfig entsprechend verwenden.

Ja, es gibt Verzögerungen, aber diese App, SoundWire, ist das einfachste "Multi-Connect to IP and Forget" -System, das es gibt. Keine verrückten Menüs zu durchlaufen. Und ja, es können mehrere Verbindungen hergestellt werden. Ich habe neulich 2 benutzt. Die Anzahl der angeschlossenen Geräte wird im Hauptfenster an das sendende Gerät angehängt.

Ich persönlich benutze es bis heute als Mehrraum- / Kurzstrecken-Wifi-Funksystem bei mir.

Genießen.

Roiikka
quelle
-4

Wow das ist alt ...

Wie auch immer, benutze VLC. Hübsche GUIs den ganzen Weg.

  • Starten Sie VLC auf Ihrem Desktop.
  • Hit Stream, wählen Sie die Datei aus (fügen Sie die Anzahl der gewünschten Dateien hinzu) und klicken Sie auf Stream.
  • "Weiter", wenn alles in Ordnung ist.
  • Wählen Sie für Neues Ziel "http" (oder was auch immer Sie verwenden möchten). Wählen Sie Lokal anzeigen, wenn Sie es auch auf dem Computer abspielen möchten, von dem Sie streamen. Die nächsten Dialoge sind alle selbsterklärend.

Starten Sie VLC auf Ihrem Android-Gerät. Tippen Sie auf das Symbol neben der Suchschaltfläche (der Pfeil zeigt auf den Punkt). Tippen Sie http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/für mich das warhttp://xxx.ca:8080/

Getestet und funktioniert. Könnte man das in der alten Zeit des 9. Juni 13 tun? Vielleicht, aber ich bin zu faul, um die Commit-Logs von VLC zu überprüfen;)

Zeroedout
quelle
3
Er sucht keine Musik- / Video-Streaming-Lösung.
Cristian Ciupitu