跳转到内容
类型解锁
阶段快速获胜
难度简单
工作分享流
用于开发团队
用于生产力高级用户
服务管道
为何选 HoodyHTTP 原生
类型解锁
阶段快速获胜
难度简单
工作分享流
用于开发团队
用于生产力高级用户
服务管道
为何选 HoodyHTTP 原生
类型解锁
阶段快速获胜
难度简单
工作分享流
用于开发团队
用于生产力高级用户
服务管道
为何选 HoodyHTTP 原生
类型解锁
阶段快速获胜
难度简单
工作分享流
用于开发团队
用于生产力高级用户
服务管道
为何选 HoodyHTTP 原生
PIPE · 音频 · 实时

两个终端搭起来的 HTTP 麦克风

半夜在结对调试,对面那台热点撑不住一次 Zoom。两边都有 shell。ffmpeg 抓麦克风,curl PUT 到一条管道路径,另一边 curl 然后播放字节。无 SDK、无信令、无会议。

阅读 pipe 文档

无信令、无 SDK、无 Zoom

两条 curl,一条管道路径,无信令

ffmpeg 把你的麦克风编码成 opus 写到 stdout。curl 把 stdin PUT 到 /api/v1/pipe/voice。任何人 GET 同一条路径就能在发送端产出时收到字节。管道为发送端最多保留接收端五分钟,转发 Content-Type,不存储任何东西。

从麦克风到扬声器,四行就够4 步 · 零信令
0101 · 采集

读麦克风

ffmpeg -f alsa -i default -c:a libopus -f ogg - 读你的麦克风,编码到 opus,写到 stdout。

0202 · 流式发送

管道接 curl

curl -T - 把 stdin PUT 到 /api/v1/pipe/voice。管道在同一条路径上等接收端,最多五分钟。

0303 · 连接

接收端 GET 这条路径

他们的终端跑 curl https://.../api/v1/pipe/voice。管道把发送端和接收端配上,开始流。

0404 · 播放

字节打到扬声器

他们那边的 curl 接 aplay 或 mpv。音频边到边播,字节对字节。ctrl-C 结束通话。

管道转发 Content-Type,在对端连上之前最多保留五分钟,使用 HTTPS——没有比你 shell 已经会说的协议更花哨的东西。

故意 lo-fi

无回声消除、无抖动缓冲、无花哨 DSP。这是 SRE 结对调试时用的那种语音通道:精简、低开销、稳。会议平台堆的每一层,这套管道对儿都直接没有。

不存在的层0 行代码

不会发生的事

  • 开 STUN/TURN 握手
  • 跑信令服务器交换 SDP
  • 在 WebRTC 栈里协商编解码器
  • 接受麦克风权限弹窗
  • 在桌面 app 里点击 Join
  • NAT 打洞失败时回退到 TURN
  • 在等待室里等主持人
你实际做的事两个终端

会发生的事

  • 在发送端 shell 里敲 ffmpeg | curl
  • 在接收端 shell 里敲 curl | mpv
  • 字节流过管道时聊天
  • 结束时 ctrl-C —— 路径回到什么都没有

三种读法,一对 curl

同一套"麦克风走 HTTP"的机制,根据管道另一端是谁,可以有三种读法。

面向结对调试者

SRE 应得的语音

你已经在生产事故里敲了三条命令。开 Zoom 比修这个 bug 还久。你这边 ffmpeg | curl,对面 curl | mpv——可以一边 tail 日志一边说话。

面向出差中的开发者

撑住热点

手机热点撑不住视频通话。一条 32 kbps opus 流走 HTTP 没问题。对面打开一个 URL 听就行——他们甚至不需要麦克风也能参与。

面向重视隐私的人

无录像、无 app、无账号

服务器上什么都不存。两台机器上都没有第三方 app。管道纯流式——字节穿过去,ctrl-C 一按就消失。

音频只是字节。字节只是一条管道。

按下回车,流开始按下 ctrl-C,流结束
livepipe.containers.hoody.com/api/v1/pipe/voice任一端在跑的时候
ctrl-C
404pipe.containers.hoody.com/api/v1/pipe/voice无录像、无回放

这取代了什么

每对工程师都会攒一堆语音工具。每一个都假设要开会、要账号,或要自建信令服务器。管道 URL 不假设其中任何一项。

  • Zoom 语音通话排定会议、装 app、桌面权限
  • Slack 带音屏幕共享两边都得装桌面客户端,只能用 Huddles
  • Discord 语音频道服务器成员资格、账号、码率上限
  • Google Meet 语音为 90 秒的调试聊天接一套日历管道
  • WebRTC 加自定义信令STUN/TURN、SDP 交换、要自己跑的服务器
  • 语音聊天 SaaS又一个厂商,又一份席位许可

下次有人说"开个会快速过一下吗",改打开一条管道。

阅读 pipe API

阅读其他内容