接口说明 / 门铃会议室
面向 App / H5 对接的自研会议室:业务接口走门铃鉴权,媒体层为 SRS 5 WHIP 推流 + WHEP / HTTP-FLV / HLS 拉流。不接第三方 RTC。
https://open.menkou.com/api/meeting/{action}(本站反代)https://meeting.menling.com/api/meeting/{action}(源站)| 项 | 值 |
|---|---|
| 开放平台 API | https://open.menkou.com/api/meeting/ |
| 自研站 API | https://meeting.menling.com/api/meeting/ |
| 会议室 H5 | https://meeting.menling.com/room?id={room_id} |
| WHIP 推流域 | https://live.menling.com |
| WHEP / FLV / HLS | https://zhibo.menling.com |
统一响应:
{ "code": 200, "msg": "ok", "data": { } }
code !== 200 为失败(401 未登录、403 无权限/密码错、404 不存在、410 已结束)。
门铃号 = uid。调用时带上其一:
Authorization: Bearer {uid}.{token}
token = md5(uid + "|" + authSecret)。可用 POST /api/meeting/login 用门铃号+密码换取。
X-Doorbell-Uid: 995298414
X-Meeting-Secret: <联调共享密钥,见完整文档>
POST https://open.menkou.com/api/meeting/login
Content-Type: application/json
{ "doorbell": "10001", "password": "你的密码" }
成功 data 含 uid / token / authorization(可直接作 Bearer)。
会议室 = 多路独立推流(mesh):每人推一条 meet/{stream},stream = meet_{roomId}_{uid}。App 自己 WHIP 推,其他人 WHEP(或 FLV)拉。v1 信令轮询 userList(建议 2–3s)。
| 用途 | URL 形态 |
|---|---|
| 自己推流 WHIP | https://live.menling.com/rtc/v1/whip/?app=meet&stream=meet_{roomId}_{uid} |
| 拉别人 WHEP | https://zhibo.menling.com/rtc/v1/whep/?app=meet&stream=meet_{roomId}_{对方uid} |
| 备选 HTTP-FLV | https://zhibo.menling.com/meet/meet_{roomId}_{uid}.flv |
| 备选 HLS | https://zhibo.menling.com/meet/meet_{roomId}_{uid}.m3u8 |
浏览器 / WebView:getUserMedia → RTCPeerConnection → POST WHIP/WHEP(Content-Type: application/sdp)。可参考 https://zhibo.menling.com/assets/srs/srs.sdk.js。
| Method | Path(相对 Base) | 说明 |
|---|---|---|
| GET/POST | /health | 健康检查 |
| POST | /login | 门铃号登录换 token |
| POST | /token | 联调签发 token |
| GET/POST | /me | 当前用户 |
| POST | /create | 创建会议室(主持人) |
| POST | /join | 加入 |
| GET/POST | /list | 我的会议室列表 |
| GET/POST | /userList | 房内成员 + 各路播流 URL |
| GET/POST | /info | 房间摘要(可不登录) |
| POST | /exit | 离开 |
| POST | /end | 主持人结束 |
| POST | /kick | 主持人踢人 |
| POST | /block | 主持人封禁 |
| POST | /raiseHand | 研讨会:观众举手 |
| POST | /approveSpeak | 研讨会:批准连麦升嘉宾 |
| POST | /muteAll | 全员静音 |
| POST | /setRole | 设置角色 |
角色:role=0 主持人,role=1 嘉宾/参会者,role=2 观众(webinar),role=3 联席主持。创建可传 mode=meeting|webinar(默认 meeting,兼容旧客户端)。
POST https://open.menkou.com/api/meeting/create
Authorization: Bearer 10001.xxxxx
Content-Type: application/json
{ "meeting_theme": "周会", "password": "", "mode": "meeting" }
成功 data 含 room_id、share_code、self.publish.whip、self.play、signaling(轮询 userList)。千人请用 mode=webinar(见下节)。
POST https://open.menkou.com/api/meeting/join
Authorization: Bearer 10001.xxxxx
Content-Type: application/json
{ "room_id": 8000041, "password": "" }
也可用 { "share_code": "A1B2C3D4" }。成功含 participants[] 各路 play(WHEP/FLV/HLS)。
POST https://open.menkou.com/api/meeting/userList
Authorization: Bearer 10001.xxxxx
Content-Type: application/json
{ "room_id": 8000041 }
对 is_self=0 的成员建立 WHEP;自己保持 WHIP。is_end=1 则退出 UI。
Authorization: Bearer …create 或 join → 拿到 self.publish.whip 与 participants[].play.whepuserList:新成员开 WHEP,离开的关 PeerConnectionexit;主持人散会调 endroom_id / share_code(只替换媒体房间)approveSpeak 升为嘉宾后才有 WHIP/WHEP。自建 SRS,不接腾讯云。架构说明:源站 WEBINAR-1K.md · 完整字段见 MEETING-API.md §10。
| 角色 | role | 推流 | 拉流 |
|---|---|---|---|
| 主持人 | 0 | WHIP 个人流 + 节目流 webinar_{roomId} | WHEP 嘉宾 |
| 嘉宾 | 1 | WHIP 个人流 | WHEP 主持/嘉宾 |
| 观众 | 2 | 无 | 仅节目流 HLS/FLV |
| 联席主持 | 3 | 同嘉宾 | 同嘉宾 + 可审批 |
观众拉流(同直播路径形态,播域 zhibo.menling.com):
https://zhibo.menling.com/meet/webinar_{roomId}.flv
https://zhibo.menling.com/meet/webinar_{roomId}.m3u8
主持推节目流(推域 live.menling.com):
https://live.menling.com/rtc/v1/whip/?app=meet&stream=webinar_{roomId}
POST https://open.menkou.com/api/meeting/create
Authorization: Bearer 10001.xxxxx
Content-Type: application/json
{
"meeting_theme": "千人分享会",
"mode": "webinar",
"audience_mode": "hls_flv",
"max_guests": 16
}
默认 audience_mode=hls_flv。成功含 self.publish_program 与 program.http_flv / program.hls。
POST https://open.menkou.com/api/meeting/raiseHand
{ "room_id": 8000100, "raise": 1 }
POST https://open.menkou.com/api/meeting/approveSpeak
{ "room_id": 8000100, "user_id": 10002, "approve": 1 }
POST https://open.menkou.com/api/meeting/muteAll
{ "room_id": 8000100, "mute": 1 }
join 默认观众(role=2)。批准后客户端切换为 WHIP 推 + WHEP 拉;观众始终只播节目流。
api.menling.com/meeting/* 暂保留;新 App 请切到本文档 Base。curl -sk https://open.menkou.com/api/meeting/health
期望 code=200 且 data.service=meeting-selfhost。
更全的字段与错误码见 MEETING-API.md。