Journal Transférer du son en réseau avec Pulseaudio, VLC, et un clavier bépo

Posté par  . Licence CC By‑SA.
Étiquettes :
27
2
juin
2012

Bonjour, voici un petit journal de propagande pro-pulseaudio. Il s'agit de voir une astuce pour transférer du son en réseau avec pulseaudio et vlc.

Vous connaissez peut-être les fonctionnalités réseau de Pulseaudio, qui permet d'envoyer des flux sonores sur son réseau en quelques clics grâce à avahi et des magnifiques interfaces gtk.

C'est merveilleux tout ça, mais cela nécessite d'avoir pulseaudio qui tourne sur les deux machines à relier. Et ce n'est malheureusement pas toujours le cas. Surtout quand une des machines n'est pas sous GNU/Linux.

Dans ce journal, la solution exposée sera un magnifique dell sous Ubuntu avec pulseaudio servant de émetteur, et un encore plus magnifique mac powerpc obsolète selon apple, faisant tourner VLC en récepteur.

Grâce à une étude sur une longue durée, des années de recherches désespérées, des centaines de tentatives de logiciels propriétaires plus ou moins mauvais, j'ai enfin trouvé une bidouille fonctionnant relativement correctement.

Sur le récepteur avec VLC:

nc -l 4242 | /Applications/VLC.app/Contents/MacOS/VLC --no-video --demux=rawaud --rawaud-fourcc=s16l --rawaud-samplerate=44100 --rawaud-channels=2 --file-caching=50 -Idummy -

Sur l'émetteur avec pulseaudio:

parec --format=s16le --rate=44100 --channels=2 --device=combined.monitor --latency-msec=50 | nc host_recepteur 4242

Ici, device correspond à une sortie virtuelle correspondant à toutes les cartes sons locales, qu'il faut activer avec paprefs. Il est aussi possible d'utiliser l'identifiant de sa carte son, si l'on veut avoir deux sorties simultanées et en décalé.
Je conseille aussi l'utilisation de pavucontrol pour spécifier le volume de chaque application, et régler correctement tout ça à l'arrache.

Voila, ça devrait suffire pour aujourd'hui. N'hésitez pas à partager votre solution, surtout si elle est beaucoup plus simple.

Et n'oubliez pas, Pulseaudio, c'est simple ! <3

  • # PulseAudio sous Mac OS X

    Posté par  (site web personnel) . Évalué à 2.

    Il y a un port de PulseAudio sous Mac OS X
    S'il marche, tout devrait être contrôlable simplement via le GUI.

    • [^] # Re: PulseAudio sous Mac OS X

      Posté par  . Évalué à 2.

      Ah, je vais y jetter un oeil. J'avais justement cherché un port de puleaudio, mais je n'avais trouve que des articles disant que pulseaudio utilisait trop de fonctions specifiques a linux, et qu'un port serait trop complique.

      Envoyé depuis mon lapin.

    • [^] # Re: PulseAudio sous Mac OS X

      Posté par  . Évalué à 3.

      Dans le port de pulseAudio
      Ya des marins qui chantent ….

  • # BÉPO ?

    Posté par  (site web personnel) . Évalué à 7.

    Suis-je le seul à ne pas voir le BÉPO dans l'affaire?

    Est-ce pous dire que seuls les utilisateurs de BÉPO peuvent répondre?

  • # Pulseaudio, c'est simple !

    Posté par  . Évalué à 3. Dernière modification le 03 juin 2012 à 12:00.

    Bravo pour la bidouille. Je n'aurai pas été capable d'en faire autant.

    Je me suis déjà amusé avec les fonctions réseau de pulseaudio.

    En résumé il y a 4 façon de diffuser du son sur un réseau avec pulseaudio :

    • Tunnel pulseaudio (protocole natif pulseaudio)
    • RTP idéal pour diffuser vers un client compatible rtp comme VLC
    • AirPort RAOP / AirTunes qui malheureusement ne semble pas compatible avec la version 2 du protocole. (ne fonctionne pas avec la Freebox par exemple)
    • DLNA/UPnP fonctionne en association avec rygel (tutoriel). Fonctionne avec la Freebox malgré quelques défauts.

    J'ai tout testé et tout fonctionne sauf AirTunes. Toutes ces méthodes sont assez simples à mettre en place avec l'interface graphique paprefs. Il est aussi possible d'utiliser pacmd à condition de bien connaître pulseaudio.

    Doc sur pulseaudio.org : http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/User/Network

  • # On fait ça depuis la nuit des temps sans pulseaudio

    Posté par  (Mastodon) . Évalué à 8.

    Pour un journal qui se veut pro-pulseaudio, je trouve qu'au contraire tu en démontres le manque d'intérêt. Si on est obligé d'utiliser netcat, on pouvait le faire depuis l'antiquité déjà et sans pulseaudio:

    http://www.debian-administration.org/article/use_and_abuse_of_pipes_with_audio_data/print

  • # MPD sait faire

    Posté par  . Évalué à 4. Dernière modification le 03 juin 2012 à 17:16.

    Danse la conf mpd de l'émetteur :

    audio_output {
        type        "httpd"
        name        "My HTTP Stream"
        encoder     "vorbis"        # optional, vorbis or lame
        port        "8000"
        bind_to_address "0.0.0.0"   # optional, IPv4 or IPv6
    #   quality     "5.0"           # do not define if bitrate is defined
        bitrate     "128"           # do not define if quality is defined
        format      "44100:16:1"
        max_clients "0"             # optional 0=no limit
    }
    
    

    Sur le récepteur :

    vlc http://host_recepteur:8000
    
    

    Il m'a suffit de décommenter un exemple fourni dans mpd.conf. Ça va, ce n'est pas trop dur. ;)
    vlc peut, bien sur, être remplacé suivant les gouts (mplayer – what else ?).

    si l'on veut avoir deux sorties simultanées et en décalé

    Ajouter une autre entrée audio_output :

    audio_output {
        type "alsa"
        name            "My ALSA Device"
        mixer_type      "software"».# optional
    }
    
    

    En effet, Puseaudio, c'est simple de s'en passer. :p

    • [^] # Re: MPD sait faire

      Posté par  . Évalué à 2.

      Intéressant, mais c'est un peu sortir l'artillerie lourde :) Surtout que l'idée était d'avoir une bonne qualité sonore (sinon, je peux aussi brancher un câble jack entre les deux machines), et de faire du lossless. Bon je suppose que l'on peut faire mieux que du vorbis à 128kbits/s.

      Envoyé depuis mon lapin.

      • [^] # Re: MPD sait faire

        Posté par  . Évalué à 4.

        « sortir l'artillerie lourde » ? C'est un point de vue étonnant. Mais je suppose que ça se défend, sur une distribution avec Pulseaudio pré-installé.

        À propos de la qualité, après relecture du journal, tu sembles balancer du raw directement. Ça ne plombe pas le réseau ?

        • [^] # Re: MPD sait faire

          Posté par  . Évalué à 3.

          En fait, je pensais que c'était plus compliqué d'utiliser du MPD.

          Au niveau du réseau, je ne m'amuserais pas à faire passer ça en wifi, mais en ethernet, aucun problème. Ça fait un peu moins de 200ko/s.

          Envoyé depuis mon lapin.

        • [^] # Re: MPD sait faire

          Posté par  (site web personnel) . Évalué à 5.

          Par « Artillerie lourde » je verrait surtout le fait que ça fait passer la musique dans un stream HTTP, et que HTTP n’est pas fait pour ça. Donc c’est bien de faire passer ça dans un protocole prévu pour ça…

          La lumière pense voyager plus vite que quoi que ce soit d'autre, mais c'est faux. Peu importe à quelle vitesse voyage la lumière, l'obscurité arrive toujours la première, et elle l'attend.

  • # Question bête

    Posté par  . Évalué à 2.

    A quoi ça sert ? (c'est une vraie question)

    • [^] # Re: Question bête

      Posté par  . Évalué à 7.

      Trés simple, tu as chez toi deux ordinateurs, un avec des enceintes pourries, ou carrement sans enceintes, et un autre relié par des cables en or massif à un systeme audio à 25000€, et bien tu peux tranquillement regarder des videos ou ecouter de la musique sur l'ordinateur sans enceintes, et ecouter un son cristalin

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.