Aller au contenu
use-cases / a-microphone-over-http / hero
PIPE · AUDIO · LIVE

Un microphone sur HTTP, en deux terminaux

Vous êtes en pair-debug à minuit et le hotspot de l'autre côté ne survivra pas à un Zoom. Vous avez tous les deux un shell. ffmpeg capture le micro, curl envoie en PUT vers un chemin pipe, l'autre terminal fait curl et joue les octets. Pas de SDK, pas de signaling, pas de réunion.

Lire la documentation pipe

pas de signaling, pas de SDK, pas de Zoom

use-cases / a-microphone-over-http / mechanism

Deux curl, un chemin pipe, pas de signaling

ffmpeg encode votre microphone en opus et écrit sur stdout. curl envoie en PUT ce stdin vers /api/v1/pipe/voice. Quiconque fait GET sur le même chemin reçoit les octets à mesure que l'expéditeur les produit. Le pipe maintient le destinataire jusqu'à cinq minutes en attendant que l'expéditeur se connecte, transmet le Content-Type, et ne stocke rien.

Du micro aux haut-parleurs en quatre lignes4 ÉTAPES · ZÉRO SIGNALING
0101 · CAPTURE

Lire le micro

ffmpeg -f alsa -i default -c:a libopus -f ogg - lit votre microphone, encode en opus, écrit sur stdout.

0202 · DIFFUSION

Rediriger vers curl

curl -T - envoie en PUT stdin vers /api/v1/pipe/voice. Le pipe attend jusqu'à cinq minutes un destinataire sur le même chemin.

0303 · CONNEXION

Le destinataire fait GET sur le chemin

Leur terminal exécute curl https://.../api/v1/pipe/voice. Le pipe associe l'expéditeur au destinataire et démarre le streaming.

0404 · LECTURE

Les octets atteignent les haut-parleurs

Leur curl est redirigé vers aplay ou mpv. L'audio joue à mesure qu'il arrive, octet par octet. ctrl-C met fin à l'appel.

Le pipe transmet le Content-Type, supporte un temps d'attente de cinq minutes maximum avant qu'une contrepartie se connecte, et utilise HTTPS — rien de plus exotique que le protocole que votre shell parle déjà.

use-cases / a-microphone-over-http / lofi

Lo-fi par choix

Il n'y a pas d'annulation d'écho, pas de buffer de jitter, pas de DSP sophistiqué. C'est le genre de canal vocal sur lequel un duo SRE fait du pair-debug : dépouillé, faible surcoût, fiable. Chaque couche qu'une plateforme de réunion construit est une couche que la paire pipe n'a tout simplement pas.

COUCHES QUI N'EXISTENT PAS0 LIGNE DE CODE

Choses qui n'arrivent pas

  • Ouvrir une poignée de main STUN/TURN
  • Faire tourner un serveur de signaling pour échanger des SDPs
  • Négocier un codec à travers la stack WebRTC
  • Accepter une boîte de dialogue de permission micro
  • Cliquer sur Rejoindre dans une application desktop
  • Faire un fallback vers TURN quand le NAT punching échoue
  • Attendre dans une salle d'attente l'hôte
CE QUE VOUS FAITES VRAIMENTDEUX TERMINAUX

Choses qui arrivent

  • Tapez ffmpeg | curl dans le shell expéditeur
  • Tapez curl | mpv dans le shell destinataire
  • Parlez pendant que les octets traversent le pipe
  • ctrl-C quand vous avez fini — le chemin redevient rien
use-cases / a-microphone-over-http / angles

Trois lecteurs, une paire de curl

Le même mécanisme micro-sur-HTTP se lit de trois façons différentes selon qui est à l'autre bout du pipe.

POUR LE PAIR-DEBUGGEUR

La voix que le SRE mérite

Vous êtes trois commandes plus loin dans un incident en prod. Lancer Zoom prendrait plus de temps que le fix. ffmpeg | curl de votre côté, curl | mpv du leur — vous pouvez parler pendant que vous suivez les logs.

POUR LE DEV NOMADE

Survivre au hotspot

Le partage de connexion téléphonique étouffe sur un appel vidéo. Un flux opus à 32 kbps sur HTTP, non. L'autre extrémité ouvre une URL et écoute — ils n'ont même pas besoin d'un micro pour participer.

POUR LES SOUCIEUX DE LA VIE PRIVÉE

Pas d'enregistrement, pas d'application, pas de compte

Rien n'est stocké sur un serveur. Il n'y a pas d'application tierce sur l'une ou l'autre machine. Le pipe est purement streaming — les octets passent et disparaissent au moment où ctrl-C atterrit.

use-cases / a-microphone-over-http / punchline

L'audio, ce ne sont que des octets. Les octets, ce n'est qu'un pipe.

le flux démarre quand vous appuyez sur entréele flux s'arrête quand vous appuyez sur ctrl-C
livepipe.containers.hoody.com/api/v1/pipe/voicetant que l'une ou l'autre extrémité tourne
ctrl-C
404pipe.containers.hoody.com/api/v1/pipe/voicepas d'enregistrement, pas de replay
use-cases / a-microphone-over-http / replaces

Ce que cela remplace

L'arsenal d'outils vocaux que toute paire d'ingénieurs accumule. Chacun suppose une réunion, un compte, ou un serveur de signaling personnalisé. L'URL pipe ne suppose aucun d'entre eux.

  • Appel vocal ZoomPont planifié, installation d'application, permissions desktop
  • Partage d'écran Slack avec audioLes deux côtés sur le client desktop, Huddles uniquement
  • Canal vocal DiscordAdhésion au serveur, compte, plafonds de bitrate
  • Voix Google MeetPlomberie calendrier pour 90 secondes de debug
  • WebRTC avec signaling personnaliséSTUN/TURN, échange SDP, un serveur que vous devez faire tourner
  • SaaS de chat vocalEncore un fournisseur, encore une licence par siège
use-cases / a-microphone-over-http / cta

La prochaine fois que quelqu'un dit « on peut faire un petit call rapide ? », ouvrez plutôt un pipe.

Lire l'API pipe
use-cases / a-microphone-over-http / related

Découvrez les autres