AKStream.Next · 文档中心

RTC API 对接:持续录制、档案、播放与下载

RTC API 对接:持续录制、档案、播放与下载

适用 1.0.0.158。一个会议用 roomId 标识,一次录制用 recordingId 标识;同一会议可以有多次录制。会中主持人或具 rtc.manage 的业务 API 可以启停;会后查看使用独立 rtc.recordings.view/play/download 权限或该业务后端签发的短时档案票据。入会 RTC Token 不能替代档案票据。

会中:允许、启动、查询、停止

接口 入参 返回与确认 权限/特殊情况
PUT /api/v2/rtc/rooms/{roomId}/recording-policy JSON { "enabled": true/false } 房间录制策略 会议所有者或超级管理员;允许录制不等于已经开始。
POST /api/v2/rtc/rooms/{roomId}/recording/continuous/start 房间 ID,无请求体 recordingId、Starting/Recording、时间原点 rtc.manage;同房间已有活动任务时返回当前任务,不新开第二份。
GET /api/v2/rtc/rooms/{roomId}/recording/continuous/current 房间 ID 当前任务或空 业务后台可轮询;空只表示没有活动录制。
POST /api/v2/rtc/rooms/{roomId}/recording/continuous/{recordingId}/stop 指定任务 ID Stopping,随后 Stopped rtc.manage;Stopping 时原轨还在封口,不能立刻下载。
POST /api/v2/rtc/session/rooms/{roomId}/recording/continuous/start / .../{recordingId}/stop 会中设备 Token;停止带录制 ID 同一任务状态 仅当前主持人;主持移交后旧主持人返回403。
GET /api/v2/rtc/session/rooms/{roomId}/recording/continuous/current 当前设备 Token 当前状态或空 已准入普通成员也能知道会议正在录制。
GET /api/v2/rtc/rooms/{roomId}/recording/continuous/runs / GET /api/v2/rtc/session/rooms/{roomId}/recording/continuous/runs 房间 ID、对应业务或档案身份 历史任务列表 与查询当前活动任务不同;访问范围由档案权限决定。

旧 recording/start、recording/stop、recording/targets 是逐 Publication 的兼容入口,不应拿来代替整场持续录制。会中原始音视频按现有编码复制到独立轨,不额外生成实时混流;成员/屏幕兼容副本与整场 MP4 在会后处理。静音或断网时段保留真实缺口,不能用旧画面冒充实时画面。

业务后端:按会议签短时档案票据

POST /api/v2/rtc/rooms/{roomId}/recordings/access
Authorization: Bearer <业务后端平台会话或 API Token>
Content-Type: application/json

{"actions":["view","play","download"],"lifetimeSeconds":120}

请求 actions 只允许 view/play/download,默认 view+play,请求 play 或 download 时服务端也加入 view;有效期限制 30–600 秒,默认 120。响应包含 token、roomId、实际 actions、expiresAtUtc。签发者不能授予自己没有的权限,使用时继续复核原会话/API Token、账号、权限和会议范围。将短票据交给获准客户端,长期管理 Token 留在业务后端。

动作 权限 能做什么 不能做什么
view rtc.recordings.view 列表、清单、公开事件、附件预览 不能播放媒体或下载 ZIP。
play rtc.recordings.play,同时需 view HTTP Range 播放本次录制文件和整场 MP4 不是下载授权。
download rtc.recordings.download,同时需 view 下载本次文件、附件、ZIP 与整场 MP4 不包含其他会议或私聊内容。

票据查询用 Authorization: Bearer <档案票据>;资源返回的短时 URL 中可能带 rtc_archive_token,只用于获准的只读路径,过期后重新签发,禁止公开转发。rtc.manage 管理员具备管理路径,但业务终端只拿最小档案动作。

查询任务、时间线和设备

接口 入参 返回 特殊情况
GET /api/v2/rtc/recordings roomId、search、state、fromUtc/toUtc、participantId/deviceSessionId、page/pageSize total/page/pageSize/items[],每项含 recordingId、状态、开始时间、人数/设备数 页大小 1–100;时间过滤录制开始时间左闭右开;授权、筛选先于计数和分页。
GET /api/v2/rtc/session/rooms/{roomId}/playback/recordings/{recordingId}/manifest afterSequence、maxEvents originAtUtc、durationMilliseconds、tracks[]、composites[]、events[]、hasMoreEvents/nextSequence 每页事件可能不完整;按 nextSequence 续读。文件偏移和事件偏移共用原点。
GET .../full-exports recordingId 每次导出的 ID、区间、状态、文件 Pending/Running/Failed 不应出现假播放链接。

上述 GET .../full-exports 的完整前缀为 /api/v2/rtc/session/rooms/{roomId}/playback/recordings/{recordingId}。tracks[] 按 participantId + deviceSessionId + mediaKind 分路;同一成员换机可有多台设备,设备会话不是硬件 ID。events[] 包含服务端允许回放的公开聊天、白板、控制和设备发言事件。私发消息/附件不会因主持身份自动变公开;旧客户端或旧任务缺事件时显示“未知”,不要推断历史。

媒体、附件、ZIP 与整场导出

以下读取接口共享前缀 /api/v2/rtc/session/rooms/{roomId}/playback/recordings/{recordingId},均会复核文件/附件是否确实归属本次会议和录制。

方法与后缀 所需动作 返回/用途 特殊情况
GET /files/{fileId}/media play 原轨或成员副本,支持 HTTP Range 播放器保存当前位置;短票据过期时换 URL。
GET /files/{fileId}/download download 指定文件附件响应 不能用猜到的 fileId 读其他任务。
GET /attachments/{attachmentId}/content view 本次公开图片、视频、PDF或文本预览 其他类型可能返回415;私聊或区间外引用不可见。
GET /attachments/{attachmentId}/download download 获准公开附件下载 附件仍按原会议可见范围检查。
GET /package download 本次原轨、成员/屏幕副本、公开事件及附件 ZIP 大包流式返回;不可用附件在清单中说明,不伪造文件。
GET /full-exports/{exportId}/media / /download play / download 已完成的固定布局 MP4,播放支持 Range 只有 Available 的整场导出可读取。

业务后台按需排队整场导出:

POST /api/v2/rtc/rooms/{roomId}/recording/continuous/{recordingId}/full-exports
Authorization: Bearer <具备 rtc.manage 的业务 API Token>
Content-Type: application/json

{"startMilliseconds":0,"endMilliseconds":60000}

起止是相对录制原点的毫秒,start < end 且不能越过有效范围;返回导出任务 ID 后查询状态。失败的会后成员/屏幕副本和整场导出分别有 .../composites/{compositeId}/retry、.../full-exports/{exportId}/retry 管理入口,重试需仍有原轨和授权。整场导出完成后再取得可播放成品。

失败处理

结果 处理
401 票据过期、签发者源凭据撤销;从业务后端重新取得,不使用 RTC 入会 Token。
403 缺动作或当前用户无此会议档案权限;停止重试并请求授权。
404 会议、录制、文件、附件不属于同一可见范围;重新查列表和清单。
415 不支持站内预览的附件格式;有 download 权限时走下载入口。
Starting/Recording/Stopping 会中任务状态,Stopping 后继续等 Stopped 和文件索引。
Pending/Running/Failed/Available 副本或导出状态;只把 Available 作为可播放产物。

无 UI 的 Web、Android、iOS、UniApp 档案函数和回放设备发言的使用方法见档案 SDK 参考。