54 votes

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

Je veux diffuser ma sortie audio sur le réseau (Wi-Fi) vers mes appareils Android. Je ne cherche pas une solution de diffusion de musique/vidéo, mais je voudrais diffuser n'importe quelle sortie audio de mon ordinateur GNU/Linux vers mes appareils 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 l'ai activé sur les paprefs) + l'application AirBuddle d'Android, mais l'audio n'est pas diffusé (pulseaudio seens connecter à AirBuddle, mais le son n'est pas reproduit, il y a un échec de connexion dans certains logiciels, dans d'autres le son est bloqué).

37voto

David Fells Points 3829

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. Effectuez 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écharger et installer PulseDroid.apk

  5. Lancez l'application sur votre téléphone ; réglez l'adresse IP sur votre ordinateur et le port sur 8000 .

P.S. 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'espérez pas trop du streaming audio brut sur le WiFi ; cela nécessite une énorme quantité de bande passante. Même avec un routeur/AP sans fil haut de gamme avec un signal puissant, je n'ai pas réussi à obtenir plus qu'un son bégayant. Votre meilleure chance est probablement de configurer un serveur multimédia approprié (comme Rygel, qui fonctionne bien avec Pulseaudio) pour transcoder l'audio brut vers quelque chose comme le MP3 et le diffuser à la place.

25voto

wilks Points 391

Vous pouvez utiliser VLC pour servir un flux MP3 de la 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) suffit pour lire le flux. L'inconvénient est qu'il s'agit d'un flux audio uniquement et que le 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 http de VLC, 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, dirigez le navigateur (ou l'application de streaming audio) vers :

    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 mettez totalement en sourdine. 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 sont 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}'

10voto

totti Points 842

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

Haut-parleur sans fil WiFi Audio

Lancez l'application WiFi Audio Android et appuyez sur démarrer, vous verrez l'adresse IP de l'appareil mobile en bas de l'écran. après cela, lancez l'application Windows/Linux et mettez l'adresse IP de l'appareil mobile dans le champ de l'adresse IP, puis appuyez sur start sur l'application PC. Maintenant, tout le son sortant du PC sera envoyé à l'appareil mobile et vous entendrez le son sur l'appareil mobile.
Télécharger

SoundWire

Transmettez sans fil toute la musique ou l'audio de votre PC à votre téléphone Android, votre tablette ou d'autres PC.
Page d'accueil Voir aussi

Autres liens utiles
XBMC Android SE

1voto

pelya Points 111

J'ai publié un serveur PulseAudio natif pour Android (incluant également un serveur X11) :

https://play.google.com/store/apps/details?id=x.org.server

Pour l'utiliser, définissez la variable d'environnement PULSE_SERVER pour votre application Linux à partir de laquelle vous voulez rediriger l'audio :

export PULSE_SERVER=tcp:10.0.0.100:4713
vlc

donde 10.0.0.100 est l'adresse IP de votre appareil Android.

L'inconvénient est que vous devrez lancer chaque application depuis le terminal, l'avantage est que cela devrait être moins lent que module-simple-protocol-tcp. Vous pouvez mettre PULSE_SERVER à /etc/profile pour la définir en tant que variable env du système, vous n'aurez pas besoin d'utiliser le terminal, mais vous devrez la modifier et redémarrer votre PC chaque fois que votre appareil Android obtiendra une adresse IP différente.

0voto

Roiikka Points 21

Pour ceux d'entre vous qui utilisent Soundwire et envoient du wifi depuis leur ordinateur portable ou PC, en utilisant ifconfig, ASSUREZ-VOUS D'UTILISER LA BONNE ADRESSE IP. Cela fonctionne encore aujourd'hui 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 l'internet. Celui qui l'envoie.

i.e. -> Si vous utilisez l'adaptateur wifi "A" pour vous connecter à Internet et "B" pour envoyer le wifi depuis "A", alors connectez SoundWire sur Android à "B" et non à "A".

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

Oui, il y a du décalage, mais cette application, SoundWire, est le système le plus simple qui soit pour se connecter à un ordinateur et l'oublier. Pas de menu fou à 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 dans la fenêtre principale de l'appareil qui envoie la transmission.

Je l'utilise personnellement comme un système de radio wifi multi-room/à courte distance chez moi jusqu'à aujourd'hui.

Profitez-en.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X