Journal Capter l’audio d’une visio dans le navigateur sous Linux, sans bot dans la réunion

Posté par  . Licence CC By‑SA.
-5
15
sept.
2026

Salut 'Nal,

Je me suis pris les pieds dans getDisplayMedia() sous Linux. Ça m'a pris plus de temps que d'appeler un LLM, donc autant l'écrire ici.

L'idée, c'est un assistant de réunion qui affiche des suggestions pendant l'appel, plutôt qu'un résumé une fois que tout le monde a raccroché. Pas de bot dans la visio. Le navigateur capte l'audio que l'utilisateur choisit de partager, ce qui évite le participant fantôme que tout le monde voit, et que pas mal de boîtes bloquent.

Sous Windows, partager l'écran entier peut emporter l'audio système, donc le son de Teams desktop ou de Zoom. Sous Linux, cette case n'existe pas. macOS non plus, sauf à installer un pilote du genre BlackHole. J'avais écrit l'inverse sur un billet produit, avant d'aller vérifier.

La popup Chromium propose trois surfaces. Pour la vidéo, peu importe. Pour l'audio, ça change tout.

Surface Audio
Onglet Chromium oui, tous les OS desktop (case souvent déjà cochée)
Écran entier Windows et ChromeOS seulement, et encore, il faut cocher
Fenêtre jamais

Le chemin que je peux documenter sous Linux, c'est une visio dans un onglet Chromium (Meet, Teams web, Zoom web). On partage cet onglet, on a le son. Le .deb de Teams ou de Zoom, le navigateur n'a aucun moyen d'aller chercher leur flux. Je ne promets donc pas la capture d'une appli de bureau.

On peut toujours monter un null-sink PulseAudio ou PipeWire et rerouter le son. Des gens le font, et sous Linux c'est même plus propre qu'un BlackHole sur Mac. Ce n'est pas ce que le produit fait, et je ne vais pas coller un tutoriel pavucontrol dans la doc.

Firefox ne sort pas d'audio d'onglet comparable. Safari non plus. Il reste Chromium, paquet distro ou Chrome. Ça m'agace de l'écrire sur LinuxFr. Je n'ai pas de plan B.

Le classique, c'est de partager la fenêtre de l'appli de visio. La prévisualisation a l'air bonne, le MediaStream arrive, et il n'y a juste pas de piste. Le navigateur ne le signale pas. Je me suis fait avoir.

Dans le code on envoie systemAudio: "include", comme le recommande la doc Chrome, parce que la valeur par défaut pourrait changer :

navigator.mediaDevices.getDisplayMedia({
  video: true,
  audio: { systemAudio: "include" },
});

Sous Linux, ça ne crée aucune capacité que le navigateur n'a pas déjà.

Une fois qu'on a une piste, la suite est plus banale. AudioWorklet, PCM16 mono 16 kHz, petits morceaux sur une WebSocket, reconnaissance en streaming. On ne déclenche les suggestions que sur des transcripts finalisés, et le système a le droit de se taire. Pour la qualité je regarde la latence et les pouces, pas le texte des conversations. Le timing m'a plus occupé que le modèle. Ça fera un autre journal si ça intéresse.

Censuré par la modération

Si quelqu'un a une piste sérieuse pour l'audio d'onglet dans Firefox, je suis preneur.

  • # Voici une piste sérieuse

    Posté par  (site web personnel) . Évalué à 1 (+0/-1).

    A lire

    S'il y a un problème, il y a une solution; s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.

  • # pipewire

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

    pipewire route le son de ce que tu veux, vers ou tu veux.

  • # Contre attaque

    Posté par  (Mastodon) . Évalué à 5 (+2/-0). Dernière modification le 15 septembre 2026 à 22:50.

    Je tente une modération soft sur les trucs vibe-codés dont on n'a rien à foutre. J'ai censuré le seul lien du journal.

    En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.

    • [^] # Re: Contre attaque

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

      Mais là le journal n'a vraiment plus aucun sens. Ça parle de plein de trucs mais on ne voit aucun résultat… À ce stade autant supprimer le journal, non ?

      • [^] # Re: Contre attaque

        Posté par  (site web personnel) . Évalué à 2 (+0/-0). Dernière modification le 16 septembre 2026 à 00:29.

        Mais là le journal n'a vraiment plus aucun sens.

        en avait-il vraiment ? bon, ces derniers temps je lis le début et zappe (de plus en plus souvent) à la fin direct pour voir si ça vaut le coup…

        mais quand je tombe à la fin (j'essaie de ne pas me faire mal tout de même) sur une phrase comme :

        Pour la qualité je regarde la latence et les pouces, pas le texte des conversations. Le timing m'a plus occupé que le modèle. Ça fera un autre journal si ça intéresse.

        la latence (ok) et les pouces (?!)

        ok, je n'essaie pas de comprendre, je ne lis pas le journal, à confirmer par DaveNull s'il en veut.
        compte créé ya 2 jours avant de poster ('fin le 13…) et déjà mal parti :/

Envoyer un commentaire

Suivre le flux des commentaires

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