コンテンツにスキップ
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブストリームを共有
対象開発チーム
対象生産性パワーユーザー
サービスパイプ
Hoody の利点HTTP ネイティブ
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブストリームを共有
対象開発チーム
対象生産性パワーユーザー
サービスパイプ
Hoody の利点HTTP ネイティブ
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブストリームを共有
対象開発チーム
対象生産性パワーユーザー
サービスパイプ
Hoody の利点HTTP ネイティブ
タイプアンロック
ステージクイックウィン
難易度シンプル
ジョブストリームを共有
対象開発チーム
対象生産性パワーユーザー
サービスパイプ
Hoody の利点HTTP ネイティブ
PIPE · AUDIO · LIVE

2 つのターミナルで HTTP 越しのマイク

深夜のペアデバッグ中、相手のテザリングは Zoom に耐えられません。お互いシェルは持っています。ffmpeg がマイクをキャプチャ、curl がパイプパスに PUT、もう一方のターミナルが同じパスを curl してバイトを再生します。SDK なし、シグナリングなし、ミーティングなし。

パイプドキュメントを読む

シグナリングなし、SDK なし、Zoom なし

2 つの curl、1 つのパイプパス、シグナリングなし

ffmpeg がマイクを opus にエンコードし、stdout に書き出します。curl はその stdin を /api/v1/pipe/voice に PUT します。同じパスを GET する者がセンダーの生成と同じペースでバイトを受け取ります。パイプはセンダーの接続を最大 5 分間レシーバーを保持し、Content-Type を転送し、何も保存しません。

マイクからスピーカーまで 4 行で4 ステップ · シグナリング不要
0101 · CAPTURE

マイクを読む

ffmpeg -f alsa -i default -c:a libopus -f ogg - がマイクを読み、opus にエンコードして stdout に書き出します。

0202 · STREAM

curl にパイプ

curl -T - が stdin を /api/v1/pipe/voice に PUT します。パイプは同じパスのレシーバーを最大 5 分間待ちます。

0303 · CONNECT

レシーバーがパスを GET

相手のターミナルが curl https://.../api/v1/pipe/voice を実行します。パイプがセンダーとレシーバーをマッチングし、ストリーミングを開始します。

0404 · PLAY

バイトがスピーカーに届く

相手の curl は aplay や mpv にパイプされます。オーディオは届いたバイトそのものを再生します。ctrl-C で通話終了。

パイプは Content-Type を転送し、相手が接続するまで最大 5 分のホールドタイムをサポートし、HTTPS を使います — シェルがすでに話すプロトコル以上に exotic なものは何もありません。

意図的にロー Fi

エコーキャンセラーも、ジッターバッファーも、派手な DSP もありません。SRE がペアデバッグするときに使うようなボイスチャンネル:そぎ落とされていて、オーバーヘッドが低く、頼りになる。ミーティングプラットフォームが積み上げるすべてのレイヤーが、パイプペアにはありません。

存在しないレイヤーコード 0 行

起こらないこと

  • STUN/TURN ハンドシェイクを開く
  • SDP を交換するシグナリングサーバーを動かす
  • WebRTC スタック越しにコーデックをネゴシエート
  • マイク許可ダイアログを承諾
  • デスクトップアプリで参加をクリック
  • NAT トラバーサルが失敗したら TURN にフォールバック
  • ホストを待つ待機ルームに座る
実際にすることターミナル 2 つ

起こること

  • 送信側シェルで ffmpeg | curl を入力
  • 受信側シェルで curl | mpv を入力
  • パイプを通ってバイトが流れる間に話す
  • 終わったら ctrl-C — パスは何もない状態に戻る

3 つの読み方、1 ペアの curl

同じマイク・オーバー・HTTP のしくみは、パイプの反対側に誰がいるかによって 3 通りに読めます。

ペアデバッガー向け

SRE にふさわしいボイス

プロダクションのインシデント対応で 3 コマンド踏み込んでいます。Zoom を立ち上げる方が修正より時間がかかる。あなたは ffmpeg | curl、相手は curl | mpv — ログを tail しながら話せます。

旅する開発者向け

テザリングを生き延びる

スマホテザリングはビデオ通話で詰まります。HTTP 越しの 32 kbps の opus ストリームは詰まりません。相手は URL を開いて聴くだけ — 参加するためにマイクすら不要です。

プライバシー重視の人向け

録画なし、アプリなし、アカウントなし

サーバーには何も保存されません。どちらのマシンにもサードパーティアプリはありません。パイプは純粋にストリーミング — バイトは通り抜けて、ctrl-C と同時に消えます。

オーディオはただのバイト。バイトはただのパイプ。

Enter キーを押すとストリーム開始ctrl-C を押すとストリーム終了
ライブpipe.containers.hoody.com/api/v1/pipe/voiceどちらかが起きている間
ctrl-C
404pipe.containers.hoody.com/api/v1/pipe/voice録画なし、リプレイなし

これが置き換えるもの

エンジニアのペアがため込んでいくボイスツールの面々。どれもミーティング、アカウント、またはカスタムシグナリングサーバーを前提にします。パイプ URL はそのどれも前提にしません。

  • Zoom 音声通話予定されたブリッジ、アプリインストール、デスクトップ権限
  • Slack の音声付き画面共有両側でデスクトップクライアント、Huddles 限定
  • Discord ボイスチャンネルサーバー所属、アカウント、ビットレート上限
  • Google Meet 音声90 秒のデバッグチャットのためのカレンダー配管
  • カスタムシグナリング付き WebRTCSTUN/TURN、SDP 交換、運用すべきサーバー
  • ボイスチャット SaaSまた 1 つのベンダー、また 1 つの席ライセンス

次に「ちょっと電話で話せる?」と言われたら、代わりにパイプを開きましょう。

パイプ API を読む

他のユースケースを読む