Zum Inhalt springen
use-cases / a-microphone-over-http / hero
PIPE · AUDIO · LIVE

Ein Mikrofon über HTTP, in zwei Terminals

Du debuggst um Mitternacht zu zweit und der Hotspot der Gegenseite überlebt kein Zoom. Ihr habt beide eine Shell. ffmpeg nimmt das Mikrofon auf, curl PUTtet es an einen Pipe-Pfad, das andere Terminal curlst und gibt die Bytes aus. Kein SDK, kein Signaling, kein Meeting.

Pipe-Docs lesen

kein Signaling, kein SDK, kein Zoom

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

Zwei curls, ein Pipe-Pfad, kein Signaling

ffmpeg encodiert dein Mikrofon zu opus und schreibt es nach stdout. curl PUTtet dieses stdin an /api/v1/pipe/voice. Wer auch immer denselben Pfad GETtet, empfängt die Bytes, sobald der Sender sie produziert. Die Pipe hält den Receiver bis zu fünf Minuten lang, damit der Sender sich verbindet, reicht den Content-Type weiter und speichert nichts.

Vom Mikrofon zu den Lautsprechern in vier Zeilen4 SCHRITTE · NULL SIGNALING
0101 · CAPTURE

Mikrofon lesen

ffmpeg -f alsa -i default -c:a libopus -f ogg - liest dein Mikrofon, encodiert zu opus, schreibt nach stdout.

0202 · STREAM

In curl pipen

curl -T - PUTtet stdin an /api/v1/pipe/voice. Die Pipe wartet bis zu fünf Minuten auf einen Receiver auf demselben Pfad.

0303 · CONNECT

Receiver GETtet den Pfad

Ihr Terminal führt curl https://.../api/v1/pipe/voice aus. Die Pipe verbindet Sender und Receiver und beginnt zu streamen.

0404 · PLAY

Bytes treffen die Lautsprecher

Ihr curl pipet in aplay oder mpv. Audio läuft, sobald es ankommt, Byte für Byte. ctrl-C beendet den Call.

Die Pipe reicht den Content-Type weiter, unterstützt bis zu fünf Minuten Hold-Time, bevor ein Gegenstück verbindet, und nutzt HTTPS — nichts Exotischeres als das Protokoll, das deine Shell sowieso schon spricht.

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

Lo-fi mit Absicht

Es gibt keine Echo-Cancellation, keinen Jitter-Buffer, kein fancy DSP. Es ist die Art Voice-Channel, mit der ein SRE-Paar debuggt: heruntergebrochen, geringer Overhead, verlässlich. Jede Schicht, die eine Meeting-Plattform draufpackt, ist eine Schicht, die das Pipe-Paar einfach nicht hat.

SCHICHTEN, DIE NICHT EXISTIEREN0 ZEILEN CODE

Dinge, die nicht passieren

  • STUN/TURN-Handshake öffnen
  • Signaling-Server betreiben, um SDPs zu tauschen
  • Codec über den WebRTC-Stack aushandeln
  • Mikrofon-Berechtigungs-Dialog akzeptieren
  • In einer Desktop-App auf Beitreten klicken
  • Auf TURN zurückfallen, wenn NAT-Punching scheitert
  • Im Warteraum auf den Host warten
WAS DU TATSÄCHLICH MACHSTZWEI TERMINALS

Dinge, die passieren

  • ffmpeg | curl in der Sender-Shell tippen
  • curl | mpv in der Receiver-Shell tippen
  • Reden, während Bytes durch die Pipe fließen
  • ctrl-C, wenn ihr fertig seid — der Pfad fällt zurück auf nichts
use-cases / a-microphone-over-http / angles

Drei Leser, ein Paar curls

Derselbe Mic-über-HTTP-Mechanismus liest sich auf drei verschiedene Arten, je nachdem, wer am anderen Ende der Pipe ist.

FÜR DEN PAIR-DEBUGGER

Voice, wie der SRE sie verdient

Du bist drei Befehle tief in einem Prod-Incident. Zoom hochzufahren würde länger dauern als der Fix. ffmpeg | curl auf deiner Seite, curl | mpv auf ihrer — du kannst reden, während du Logs tailst.

FÜR DEN REISENDEN DEV

Den Hotspot überleben

Phone-Tethering erstickt an einem Videocall. Ein 32-kbps-Opus-Stream über HTTP nicht. Das andere Ende öffnet eine URL und hört zu — ein Mikrofon zur Teilnahme braucht es nicht einmal.

FÜR DEN PRIVACY-BEWUSSTEN

Keine Aufnahme, keine App, kein Account

Nichts wird auf einem Server gespeichert. Es gibt keine Drittanbieter-App auf einer der beiden Maschinen. Die Pipe ist reines Streaming — Bytes laufen durch und sind weg, sobald ctrl-C gedrückt wird.

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

Audio sind nur Bytes. Bytes sind nur eine Pipe.

Stream startet, sobald du Enter drückstStream endet, sobald du ctrl-C drückst
livepipe.containers.hoody.com/api/v1/pipe/voicesolange eine der beiden Seiten läuft
ctrl-C
404pipe.containers.hoody.com/api/v1/pipe/voicekeine Aufnahme, kein Replay
use-cases / a-microphone-over-http / replaces

Was das ersetzt

Die Reihe an Voice-Tools, die jedes Engineer-Paar anhäuft. Jedes davon setzt ein Meeting, einen Account oder einen eigenen Signaling-Server voraus. Die Pipe-URL setzt nichts davon voraus.

  • Zoom-VoicecallGeplante Bridge, App-Installation, Desktop-Berechtigungen
  • Slack-Screen-Share mit AudioBeide Seiten am Desktop-Client, nur Huddles
  • Discord-VoicechannelServer-Mitgliedschaft, Account, Bitrate-Caps
  • Google Meet VoiceKalender-Verkabelung für einen 90-Sekunden-Debug-Chat
  • WebRTC mit eigenem SignalingSTUN/TURN, SDP-Tausch, ein Server, den du betreiben musst
  • Voice-Chat-SaaSNoch ein Vendor, noch eine Sitz-Lizenz
use-cases / a-microphone-over-http / cta

Wenn das nächste Mal jemand sagt 'können wir kurz telefonieren', öffne stattdessen eine Pipe.

Pipe-API lesen
use-cases / a-microphone-over-http / related

Lies die anderen