nimeet 文档中心
English

云转码

ABR codec 模板、builderToken(5 分钟 TTL)、转码任务生命周期与更新、输出播放地址。

版本 v1.1.0 · 更新于 2026-10-26 · 修订 1

云转码(接口定义里 rtsc/cloud-transcoder)把频道的原始媒体转成多档自适应码率(ABR)输出,用于「一份直播、多种清晰度」的分发。它与 Media Push 的区别是:Media Push 负责把流送出去,云转码负责把流变成多档。

资源模型(容易搞混的三层)

text
ABR codec 模板     → 描述「有哪几档」(1080p / 720p / 480p 的编码参数)
builderToken      → 一次性写入凭证,5 分钟 TTL,只能用来创建/更新任务
task              → 真正跑的转码任务:输入频道 + 输出档位,有生命周期

顺序不能颠倒:先有模板,再拿 builderToken,再建 task。

第一步:配置 ABR 模板

bash
# 查询现有模板
curl -s "$NIMEET_API_BASE/v1/projects/$APP_ID/rtls/abr/config/codecs" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC"

# 新建/覆盖一个档位(codecId 由你指定,例如 "720p")
curl -s -X POST "$NIMEET_API_BASE/v1/projects/$APP_ID/rtls/abr/config/codecs/720p" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H 'Content-Type: application/json' \
  -d '{"enabled":true,"video":{"width":1280,"height":720,"frameRate":30,"bitrate":2000}}'

请求体两项都必填:enabled(boolean)与 video(object)。codecId 是路径参数,同一个 id 重复 POST 视为覆盖。

第二步:获取 builderToken(5 分钟、单次使用)

bash
curl -s -X POST "$NIMEET_API_BASE/v1/projects/$APP_ID/rtsc/cloud-transcoder/builderTokens" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H 'Content-Type: application/json' \
  -d '{"instanceId":"transcoder-1","services":{"cloudTranscoder":{"channelName":"weekly-sync"}}}'
字段说明
instanceId转码实例标识(必填字符串);同一实例的多次操作共享状态
services服务配置(必填对象),cloudTranscoder 子对象里放频道、输出档位等
响应 tokenName后续操作的 builderToken 参数,只在此后 5 分钟内有效且只能成功使用一次

第三步:创建转码任务

bash
curl -s -X POST "$NIMEET_API_BASE/v1/projects/$APP_ID/rtsc/cloud-transcoder/tasks?builderToken=$BUILDER_TOKEN" \
  -H "Authorization: Basic $NIMEET_CUSTOMER_BASIC" \
  -H 'Content-Type: application/json' \
  -d '{"instanceId":"transcoder-1","services":{"cloudTranscoder":{"channelName":"weekly-sync","outputs":["720p","480p"]}}}'

响应是任务快照:taskId、createTs、status、sequenceId、services、eventHandlers、execution、properties、variables、workflows。 其中 sequenceId 用于后续更新做乐观并发。

生命周期

操作端点需要的参数
创建POST /v1/projects/{appId}/rtsc/cloud-transcoder/tasksbuilderToken(query)
查询GET /v1/projects/{appId}/rtsc/cloud-transcoder/tasks/{taskId}builderToken(query)
更新PATCH /v1/projects/{appId}/rtsc/cloud-transcoder/tasks/{taskId}(body: services)builderToken(query)
销毁DELETE /v1/projects/{appId}/rtsc/cloud-transcoder/tasks/{taskId}builderToken(query)

注意:查询也要 builderToken——这是声网云转码的设计(任务操作统一走临时凭证),不是我们的额外限制。

与其他媒体服务的关系

组合效果
云转码 + Media Push多档输出推到 CDN,观众按网络选档
云转码 + 云端录制录多档(存储与成本更高;通常只录一档)
Media Gateway + 云转码OBS 推流进频道后转多档分发

配额与错误

场景返回
服务未开通403 service_not_enabled
builderToken 过期 / 已用过 / 未知401 invalid_token(消息:builderToken is unknown, already used or has expired)
services.cloudTranscoder.config.transcoder 缺失400 invalid_parameter(该嵌套结构是必填的)
并发转码任务超限429 streaming_quota_exceeded

端到端示例

bash
node 文档站 class="tok-flag">-all.mjs --only=21

21-cloud-transcoding-lifecycle.mjs:建模板 → 申请 builderToken → 建任务 → 查询 → 销毁(写操作,需要 --all)。

本页由文档构建流水线生成 · 2026-10-31 01:24:02 UTC · 文档中心 v1.1.0.

内容依据公开 API 定义.

ni-meet 是自建 RTC PaaS,媒体面基于 LiveKit(Apache-2.0),并与声网 API 兼容。