AKStream.Next · 文档中心

会议档案 SDK 函数与数据参考

会议档案 SDK 函数与数据参考

会后回放是独立于入会的能力。业务后端先用 POST /api/v2/rtc/rooms/{roomId}/recordings/access 为当前用户申请短时档案票据;view 查目录/事件,play 读媒体,download 下载文件、附件和 ZIP。票据绑定会议、签发账号/会话或 API Token,服务端每次使用仍会复核。会中的 RTC Token 不能替代它。

import { AkRtcArchiveClient, rtcArchiveSpeakers } from '@akstream/rtc-web-sdk'
const archive = new AkRtcArchiveClient({
  baseUrl: serviceOrigin,
  accessProvider: (roomId, action) => businessBackend.issueArchiveAccess(roomId, action)
})
const page = await archive.queryRecordings(roomId, { page: 1, pageSize: 20 })
const run = page.items[0]
if (run) {
  const manifest = await archive.getManifest(roomId, run.recordingId, { afterSequence: 0, maxEvents: 1000 })
  console.log(rtcArchiveSpeakers(manifest.events, 20000))
}

serviceOrigin 为 HTTPS 服务根地址;businessBackend.issueArchiveAccess 是宿主自己的服务端授权调用,返回 {token,roomId,actions,expiresAtUtc}。不要把长期 ak_pat_ Token 下发到 App,也不要永久保存媒体 URL。

Web/H5 的 AkRtcArchiveClient

函数 入参 返回 权限与特殊情况
new AkRtcArchiveClient({baseUrl,accessProvider,fetchImpl?}) 服务地址、按 roomId+action 取票函数、可选 fetch 档案客户端 可在离会后单独创建;取票函数应能在票据到期时重新申请。
queryRecordings(roomId, filters?) search、participantId、deviceSessionId、state、fromUtc/toUtc、page/pageSize {total,page,pageSize,items} view;时间过滤针对录制开始时间,授权过滤在计数和分页之前。
getManifest(roomId, recordingId, {afterSequence?,maxEvents?}) 会议、一次录制、事件游标和页上限 RtcArchiveManifest view;音视频轨与事件共用原点。按 hasMoreEvents/nextSequence 读完事件,别只取第一页。
listFullExports(roomId, recordingId) 会议与录制 ID 整场导出任务列表 view;Pending/Running 尚无可播放文件。
getMediaResource(roomId, recordingId, fileId) 归属本次录制的媒体文件 ID {url,expiresAtUtc} play;URL 可用于支持 HTTP Range 的播放器,过期后重新取票和地址。
getDownloadResource(roomId, recordingId, fileId) 同上 授权下载 URL 和到期时间 download;不能把播放 URL 当下载授权。
getAttachmentResource(roomId, recordingId, attachmentId, download?) 附件 ID;download=true 取下载动作 预览或下载 URL 查看需 view,下载需 download;仅本次公开聊天/白板实际引用的附件可读。
getWhiteboardImageResource(roomId, recordingId, attachmentId) 本次白板图片 ID 预览 URL view;私聊或其他会议的图片不会因知道 ID 而开放。
getPackageResource(roomId, recordingId) 会议与录制 ID 本次归档 ZIP URL download;ZIP 含获准公开附件,不含私聊。
getFullExportResource(roomId, recordingId, exportId, download?) 整场导出 ID、播放或下载开关 MP4 URL 和到期时间 播放需 play,下载需 download;任务完成后才可取。

rtcArchiveDeviceKey(participantId, deviceSessionId?) 返回设备级稳定视图键;rtcArchiveSpeakers(events, positionMilliseconds) 返回该时间点正在发言的 {participantId,deviceSessionId} 列表。大量事件应先按 nextSequence 补齐。RtcArchiveSpeakerTimeline(events).at(positionMilliseconds) 可供拖动、倍速和逐帧更新复用;这些函数只还原事件,不进行语音识别。

返回模型怎么读

字段 含义 容易误用的地方
recordingId、roomId 一次录制与所属会议 同一会议可有多次录制,不能只用 roomId 当文件编号。
originAtUtc、durationMilliseconds 时间线 UTC 原点与总时长 事件/文件的 offsetMilliseconds 从此原点计算,不是页面加载时间。
tracks[] 每个成员设备的原始媒体轨 用 participantId + deviceSessionId + mediaKind 区分;同一人换机可出现多轨。
tracks[].files[] 分片 fileId、时间偏移、时长、媒体与下载地址 视频断流/静音区间可以没有文件;不要冻结旧画面伪装连续。
composites[] 会后生成的成员/屏幕兼容副本 Pending/Failed 不代表原轨消失;副本只在会后生成。
events[]、hasMoreEvents、nextSequence 聊天、白板、控制和发言事件分页 hasMoreEvents=true 时继续查询;私发可见性由服务端裁剪。
speakerActivityVersion 发言事件格式版本 旧录制无事件时显示“未知”,不要推断谁在说话。

Android、iOS 与 UniApp 对应方法

平台 初始化与换票 查询方法 资源方法与结果
Android AkRtcArchiveClient(baseUrl, accessJson, okHttpClient);过期后 setAccess(JSONObject) queryRecordings(roomId, filters, Callback)、getManifest(roomId, recordingId, afterSequence, maxEvents, Callback)、listFullExports(..., Callback) getMediaResource/getDownloadResource/getAttachmentResource/getWhiteboardImageResource/getPackageResource/getFullExportResource 返回含 URL/到期时间的 JSONObject;网络查询用回调,失败带 HTTP 状态。
iOS try AkRtcArchiveClient(baseURL:access:session:);setAccess(_:) queryRecordings(roomId:filters:)、getManifest(roomId:recordingId:afterSequence:maxEvents:)、listFullExports(roomId:recordingId:) 均为 async throws 同名资源方法返回 RtcArchiveResource {url,expiresAtUtc};RtcArchiveError.status 保留 HTTP 状态。
UniApp createUniArchiveClient({baseUrl,accessProvider}) 复用 Web 档案客户端的查询与清单 原生 UTS requestRtcArchive(serverUrl,accessJson,action,payloadJson,callback) 用 query/manifest/fullExports/media/download/package/fullExportMedia/fullExportDownload/whiteboardImage/attachmentPreview/attachmentDownload 动作。

Android/iOS 的 setAccess 只替换手中短票据,不替业务后端决定谁有权看哪场会议;票据失效时宿主重新获取。原生资源方法返回地址,不创建播放器、下载管理或 UI。

错误与回放边界

情况 处理
401 档案票据过期、签发会话/API Token 被撤销或登录失效;向业务后端重新申请,不能复用入会票据。
403 缺 view/play/download 动作或当前用户无该会议权限;停止重试并提示申请权限。
404 recordingId/fileId/attachmentId 不属于同一会议或未进入本次可见区间;重新查清单。
415 附件格式不支持站内预览;在拥有 download 权限时使用下载入口。
Stopping、Pending、Running 录制/合成/导出仍在收尾;保留状态,稍后查询,不生成假文件链接。

完整 HTTP 路径和业务后端签票规则见RTC 档案 API。