Forum Linux.général son, libao, ssh, énigme

Posté par (page perso) . Licence CC by-sa.
Tags :
0
14
sept.
2019

Bon Jour.

J'ai un souci étrange avec le son…

Le contexte : Un laptop avec Debian 10/Xfce sur lequel sont connectés une webcam et des enceintes. Dans cette machine, je développe un soft ncurses qui génère du son à partir des images de la webcam. Pour sortir le son, j'utilise libao avec les paramètres par défaut. Jusque là, tout marche comme je le souhaite.

Maintenant, je me connecte par ssh à ce laptop, je lance mon soft, et paf, angoisse, le son ne sort plus. La fonction ao_play me signale une erreur, mais sans donner plus de détails. Par contre, je peux toujours accéder à la caméra ;)

J'ai un peu fouillé, mais je ne suis pas arrivé à trouver une piste pour résoudre ce problème.

tTh.

  • # Accès pulseaudio ?

    Posté par (page perso) . Évalué à 2 (+1/-0).

    Dur à dire sans voir l'erreur d'ao_play, ou sans lui coller un coup de strace avec les paramètres qui vont bien, mais je soupçonne une connexion à pulseaudio qui fonctionne quand tu es en local, mais pas quand tu es en distant ? J'ai eu des blagues un peu différentes mais qui pourraient avoir un lien… (<full-disclosure>en essayant de faire tourner un Firefox dans un chroot pour avoir une version plus récente, Firefox depuis lequel je voulais récupérer la sortie son pour suivre les matches de basket</full-disclosure>).

    En regardant rapidement mon alias pour démarrer ce Firefox chrooté, et si je me souviens bien, j'ai activé le mode TCP de pulseaudio :

    /etc/pulse/default.pa:load-module module-native-protocol-tcp auth-ip-acl=127.0.0.1 auth-anonymous=1 listen=127.0.0.1
    

    et je positionne une variable d'environnement pour éviter que Firefox essaie d'utiliser la socket UNIX : PULSE_SERVER=127.0.0.1.

    En fonction des erreurs/blocages de ton côté, ça peut n'avoir aucun rapport ou bien être une piste. Je te laisse nous tenir au courant… ;)

    Debian Consultant @ DEBAMAX

    • [^] # Re: Accès pulseaudio ?

      Posté par (page perso) . Évalué à 2 (+0/-0). Dernière modification le 14/09/19 à 15:49.

      Dur à dire sans voir l'erreur d'ao_play, ou sans lui coller un coup de strace avec les paramètres qui vont bien, mais je soupçonne une connexion à pulseaudio qui fonctionne quand tu es en local, mais pas quand tu es en distant ?

      En fait, j'ai un peu fouillé dans mon code, et le problème arrive pendant l'initialisation de la libao :

      device = ao_open_live(default_driver, &format, NULL);
      if (device == NULL) {
              perror("ao_open_live");
              return -1;
              }

      Ce qui me donne à l'exécution :

      init_process : ao default driver #1
      ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
      ao_open_live: Input/output error
      

      La première ligne m'indique que j'ai bien un default driver valide, la troisième est la sortie du perror, et la seconde est peut-être une piste.

      D'autre part, oui, strace est une bonne idée, parce qu'il me montre clairement que le comportement n'est pas le même en local ou en remote. J'ai mis les deux traces dans http://la.buvette.org/vrac/t/ et on voit clairement que pulsidiot doit être en cause.

      Je continue à chercher…

      * Ils vendront Usenet^W les boites noires quand on aura fini de les remplir.

      • [^] # Re: Accès pulseaudio ?

        Posté par (page perso) . Évalué à 0 (+0/-2).

        on voit clairement que pulsidiot doit être en cause

        Au lieu d'insulter le bon travail des autres (oui c'est bien de ne pas permettre par défaut qu'un utilisateur connecté en ssh sorte du son sur la machine) tu ferais mieux d'apprendre à suspendre pulseaudio le temps de ton bricolage : pasuspender tonsoft

        ⚓ À g'Auch TOUTE! http://afdgauch.online.fr

        • [^] # Re: Accès pulseaudio ?

          Posté par (page perso) . Évalué à 1 (+1/-2).

          Au lieu d'insulter le bon travail des autres (oui c'est bien de ne pas permettre par défaut qu'un utilisateur connecté en ssh sorte du son sur la machine)

          Par contre, c'est bien de permettre par défaut qu'un utilisateur distant puisse accéder aux webcams.

          tu ferais mieux d'apprendre à suspendre pulseaudio le temps de ton bricolage : pasuspender tonsoft

          tth@lubitel:~/Alguabeep$ pasuspender -- ./runme.sh
          Connection failure: Connection refused
          pa_context_connect() failed: Invalid argument
          tth@lubitel:~/Alguabeep$ pasuspender -s localhost -- ./runme.sh
          Connection failure: Connection refused
          pid of ./alguabeep is 1179
          reset controls -> 0
          init_process : ao default driver #1
          ALSA lib pcm_dmix.c:1108:(snd_pcm_dmix_open) unable to open slave
          ao_open_live: Input/output error
          init process -> -1
          tth@lubitel:~/Alguabeep$ 
          

          Bon, maintenant, on bricole quoi ?

          * Ils vendront Usenet^W les boites noires quand on aura fini de les remplir.

          • [^] # Re: Accès pulseaudio ?

            Posté par (page perso) . Évalué à 3 (+1/-0).

            Bon, maintenant, on bricole quoi ?

            On cherche les solutions pour que ssh transporte le son (et merci à PulseAudio).

            https://forum.ubuntu-fr.org/viewtopic.php?id=1986263

            Sauf erreur, il x2go permet ça aussi (de la même façon il semble).

            Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

            • [^] # Re: Accès pulseaudio ?

              Posté par (page perso) . Évalué à 2 (+1/-1).

              On cherche les solutions pour que ssh transporte le son (et merci à PulseAudio).

              Non. Le son doit rester sur la machine distante. Je veux juste pouvoir lancer mon soft à distance. Je pensais m'être bien exprimé, la prochaine fois je ferais une nimage :)

              * Ils vendront Usenet^W les boites noires quand on aura fini de les remplir.

              • [^] # Re: Accès pulseaudio ?

                Posté par (page perso) . Évalué à 3 (+1/-0).

                Peut-être avec une auto-connexion avec le même utilisateur que tu utilises pour ssh, ainsi cet utilisateur aura les droits sur les périphs locaux. Faudra éventuellement récupérer le n° du port PulseAudio afin de le positionner dans ton environnement.

                Python 3 - Apprendre à programmer en Python avec PyZo et Jupyter Notebook → https://www.dunod.com/sciences-techniques/python-3

Envoyer un commentaire

Suivre le flux des commentaires

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