Comment diffuser ma sortie audio GNU / Linux sur des appareils Android via WI-FI?

39

Je souhaite diffuser ma sortie audio sur le réseau (Wi-Fi) vers mes appareils Android. Je ne cherche pas de solution de streaming de musique / vidéo, mais je diffuserais n'importe quelle sortie audio de mon bureau GNU / Linux sur mon travail Android comme un casque Bluetooth.

Mon bureau GNU / Linux est Debian Wheezy et le son est fourni par pulseaudio.

J'ai essayé le module raop de Pulseaudio (et je l'ai activé sur paprefs) + l'application AirBuddle d'Android, mais le son n'est pas diffusé (pulseaudio se voit se connecter à AirBuddle, mais le son n'est pas reproduit, il y a un échec de connexion dans certains logiciels, dans certains autres logiciels le son est bloqué).

semente
la source

Réponses:

27

Il existe une solution très simple car PulseAudio dispose déjà de tous les outils nécessaires.

  1. Obtenez le nom de votre appareil source avec la commande pactl list | grep Name
  2. Créez le script suivant nommé 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. Faites quelques vérifications et préparations (pour permettre l'exécution du script et vérifier si le port s'est ouvert avec succès):

    chmod 755 pashare
    ./pashare start
    netstat -nlt | grep 8000 
    telnet 127.0.0.1 8000
    
  4. Téléchargez et installez PulseDroid.apk

  5. Lancez l'application sur votre téléphone; définissez l'adresse IP de votre ordinateur et le port sur 8000.

PS Vous pouvez également consulter cette page Wiki pour des informations générales sur le streaming réseau Pulseaudio, et cette page Wiki sur le streaming RTP. N'attendez pas trop du streaming audio brut sur WiFi; il faut d'énormes quantités de bande passante. Même avec un routeur / point d'accès sans fil haut de gamme avec un signal puissant, je n'ai pas pu obtenir plus que du bégaiement audio. Votre meilleur pari est probablement de configurer un serveur multimédia approprié (comme Rygel, qui fonctionne bien avec Pulseaudio) pour transcoder l'audio brut en quelque chose comme MP3 et le diffuser à la place.

AlexAndersan
la source
7
Cela fonctionne également parfaitement avec cette application Android: lecteur de protocole simple play.google.com/store/apps/… Notez cependant que cela vaut par défaut = 44100, donc vous voudrez peut-être l'utiliser.
Jannes
1
Juste pour clarifier: la sortie de pactl list sources short est mieux pour trouver le numéro du paramètre source.
wolfmanx
4
l'utilisation pactl list | grep "Monitor Source"montre des sources plus pertinentes pour moi.
markroxor
18

Vous pouvez utiliser VLC pour servir un flux MP3 de sortie de pulseaudio via HTTP.
Le principal avantage est que vous n'avez pas besoin d'installer de logiciel spécial sur votre appareil distant, un navigateur Web (ou un lecteur de musique) est tout ce dont vous avez besoin pour lire le flux. L'inconvénient est qu'il est uniquement audio, un décalage de quelques secondes le rend inutile pour les vidéos

  1. Trouvez le nom de sortie de pulseaudio avec:

    pactl list | grep "Monitor Source" 
    
  2. Démarrez le serveur VLC http, en remplaçant XXXX par votre nom de sortie:

    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 nécessaire, trouvez votre adresse IP locale avec ifconfig

  4. Sur votre appareil distant, pointez le navigateur (ou l'application de streaming audio) sur:

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

Remarque: le flux n'est pas affecté par le volume défini sur le serveur, sauf si vous le désactivez totalement. Si nécessaire, vous pouvez maintenir le niveau juste un peu au-dessus de 0 pour n'entendre que le périphérique distant.


Les deux premières étapes combinées en une seule par 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
la source
1
impressionnant! Il y a un décalage de 3 secondes, mais je suis content de ce petit hack jusqu'à ce que je trouve ce putain de câble. Je vais probablement devoir en acheter un autre ...
Slabo
@Slabo bon point, pour une raison quelconque, j'avais supposé à tort que l'OP ne voulait que diffuser de la musique. Modifié ma réponse
wilks
2
Un one-liner au lieu des deux premières lignes: 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
Le flux est directement affecté par le réglage du volume pour moi. Je branche juste mes écouteurs pour arrêter le son provenant de l'ordinateur portable.
Rolf
Au fait, comment puis-je empêcher le décalage de durer comme une demi-heure?
Rolf
9

Pour diffuser la sortie audio via wifi sur votre téléphone Android, vous devez installer un logiciel serveur, qui envoie l'audio, sur PC et le logiciel client sur l'appareil Android. Les options disponibles sont

Haut-parleur sans fil audio WiFi

Exécutez l'application WiFi Audio Android et appuyez sur Démarrer, vous verrez l'adresse IP de l'appareil mobile en bas après avoir exécuté l'application Windows / Linux et mettez l'adresse IP de l'appareil mobile dans le champ d'adresse IP, puis appuyez sur Démarrer sur l'application PC. Maintenant, tout l'audio provenant du PC sera envoyé à l'appareil mobile et vous entendrez l'audio sur l'appareil mobile.
Télécharger

SoundWire

Transférez sans fil toute la musique ou l'audio de votre PC vers votre téléphone, tablette ou autre PC Android.
Page d'accueil Voir aussi

Autres liens utiles
XBMC android SE

totti
la source
SoundWire est en retard de 1 à 2 secondes
Gaurav Gupta
@gauravgupta Aucun décalage si vous choisissez une taille de tampon plus petite. Essayez également d'utiliser la compression. Cela a très bien fonctionné pour moi.
raacer
pouvez-vous mettre le lien de téléchargement d'application PC de WiFi Audio ici?
seyed
1
WiFi Audio Wireless Speaker a été supprimé de github et la version compilée dans les forums est signalée par les utilisateurs comme un malware. Faites attention! Soundwire a également l'air louche, de par sa distribution.
Genom
0

Pour ceux d'entre vous qui utilisent Soundwire et envoient du wifi depuis votre ordinateur portable ou PC, utilisez ifconfig ASSUREZ-VOUS D'UTILISER L'ADRESSE IP CORRECTE. Cela fonctionne toujours à ce jour, mais la plupart des distributions Linux ont besoin d'un deuxième adaptateur wifi pour envoyer le wifi et vous devez utiliser celui auquel votre Android est connecté. pas celui qui reçoit Internet. Celui qui l'envoie.

c'est-à-dire -> Si vous utilisez un adaptateur wifi "A" pour vous connecter à Internet et "B" pour envoyer du wifi depuis "A", alors connectez SoundWire sur Android à "B" PAS "A".

SoundWire ne se connectera PAS ou ne diffusera PAS si vous vous connectez à l'adaptateur qui n'envoie pas le wifi, entrez donc votre adresse IP dans vos applications Andoroid en conséquence, en utilisant la commande de terminal ifconfig en conséquence.

Oui, il y a un décalage, mais cette application, SoundWire, est le système le plus simple de "multi-connexion à l'ip et d'oublier". Pas de menus fous à parcourir. Et oui, il accepte plus d'une connexion. J'en ai utilisé 2 l'autre jour. Il ajoute le nombre d'appareils connectés à celui-ci dans la fenêtre principale de l'appareil émettant la transmission.

En l'utilisant personnellement comme système de radio wifi multi-pièces / courte distance chez moi à ce jour.

Prendre plaisir.

Roiikka
la source
-4

Wow c'est vieux ...

Quoi qu'il en soit, utilisez VLC. Jolies GUI tout le long.

  • Lancez VLC sur votre bureau.
  • Cliquez sur Stream, sélectionnez le fichier (ajoutez le nombre de fichiers que vous souhaitez), cliquez sur Stream.
  • «Suivant» si tout est correct.
  • Pour Nouvelle destination, sélectionnez "http" (ou tout ce que vous souhaitez utiliser). Sélectionnez Afficher localement si vous souhaitez également le lire sur la machine à partir de laquelle vous diffusez. Les prochains dialogues sont tous explicites.

Lancez VLC sur votre appareil Android. Appuyez sur l'icône à côté du bouton de recherche (la flèche pointant vers le point). taper http://<IP ADDRESS O OF THE MACHINE RUNNING VLC>:8080/pour moi c'étaithttp://xxx.ca:8080/

Testé et fonctionnel. Maintenant, pourrait-on faire cela dans l'ancien temps du 9 juin 13? Peut-être, mais je suis trop paresseux pour vérifier les journaux de commmit de VLC;)

Zeroedout
la source
3
Il ne cherche pas de solution de streaming de musique / vidéo.
Cristian Ciupitu