云端录制回调信息说明

本文介绍云端录制回调的消息格式及相关参数说明。

云端录制回调重试机制

若接收到的响应错误码大于等于 500 或发生请求超时,系统会向用户重新发送一次回调消息。

云端录制回调消息格式

  • 本回调通过HTTP/HTTPS协议,以POST请求方式发送回调消息到用户配置的URL中。

  • 其中请求消息的BodyJSON格式。

  • 收到回调消息后,期望接收方返回以下内容:

    Header

    HttpStatus

    Body

    Content-Type: application/json

    200

    {

    "Code": 0,

    "Msg": "Success"

    }

云端录制回调参数说明

说明

当前云端录制回调仅支持发送任务状态变化事件。

回调消息头(header)

参数名

Content-Type

application/json

ALI-LIVE-TIMESTAMP

仅当NotifyAuthKey有效时传递,示例值:1748417138

ALI-LIVE-SIGNATURE

仅当NotifyAuthKey有效时传递,示例值:abcdefgxxx

鉴权使用说明:当创建云端录制任务时,若传入的 NotifyAuthKey 为有效值,系统在发送回调通知至用户服务端时,HTTP 请求头中将包含 ALI-LIVE-TIMESTAMPALI-LIVE-SIGNATURE 字段,用于接收方进行签名验证,确保回调消息的合法性与安全性。

其中,ALI-LIVE-SIGNATURE 的生成规则如下:

ALI-LIVE-SIGNATURE = MD5(MD5CONTENT)
MD5CONTENT = ALI-LIVE-TIMESTAMP + "|" + NotifyAuthKey
  1. 接收回调请求后,从请求头中提取 ALI-LIVE-TIMESTAMP 和 ALI-LIVE-SIGNATURE

  2. 使用本地保存的 NotifyAuthKey 与提取出的 ALI-LIVE-TIMESTAMP,按相同规则拼接(中间用 | 连接),生成 MD5CONTENT

  3. 对 MD5CONTENT 执行 MD5 计算,得到签名结果。

  4. 将计算出的签名值与请求头中的 ALI-LIVE-SIGNATURE 进行比对。

若两者不一致,则说明回调请求来源不可信,建议拒绝处理,以保障系统安全。

回调消息体(body)

参数名

类型

描述

appId

string

应用Id。

channelId

string

频道Id。

taskId

string

录制任务Id。

eventType

string

事件类型,取值请参考事件类型说明表

callbackTs

integer

发送回调的时间,为毫秒级时间戳。

例如:1744774345595。

payload

json string

其他信息。详细参数说明请参考其他信息说明表

事件类型(eventType)说明

取值

含义

TaskCreated

任务已创建。

TaskStarting

任务启动中。

TaskRunning

任务运行中。

TaskRecovering

异常恢复中。

TaskStopping

任务停止中。

TaskStopped

任务已停止。

TaskStartFailed

启动失败。

TaskUpdated

更新成功。

TaskUpdateFailed

更新失败。

RecordStart

录制正式开始。

RecordFailed

录制异常恢复超时。

其他信息(payload)说明

参数名

类型

描述

eventTs

integer

事件发生的时间,为毫秒级时间戳。

例如:1744774345595。

taskStatus

string

任务状态。取值请参见任务状态说明表

errorCode

string

错误码。取值请参见错误说明表

errorMessage

string

错误信息。取值请参见错误说明表

recordFileList

FileList

录制文件列表。具体格式请参见查询Rtc云端录制文件及任务状态中的RecordFileList

说明

仅当事件类型(eventType)为任务运行中(TaskRunning)、任务停止中(TaskStopping)、任务已停止(TaskStopped)时会返回。

streamInfo

string

仅当时间类型为录制正式开始(RecordStart)时返回。用于表示订阅的哪一条流开始录制。

  • 对于混流录制,值统一为Mix;

  • 对于单流录制,值为Single::{UserId}::{Suffix},其中:UserId为这条流对应的UserId;Suffix与订阅时填写的StreamTypeSourceType有关:

    • StreamType0时:如果SourceType0,那么SuffixAV::C;如果SourceType1,那么SuffixAV::S;

    • StreamType1时:Suffix只能为A;

    • StreamType2时(单流录制暂不支持):如果SourceType0,那么SuffixV::C;如果SourceType1,那么SuffixV::S;

任务状态(taskStatus)说明

说明

更新成功和更新失败并不影响任务状态,所以taskStatus字段中不包含这两种状态。

状态

含义

CREATED

任务创建完成返回。

STARTING

任务启动中返回。

RUNNING

任务运行中返回。

RECOVERING

任务异常恢复中返回。

STOPPING

任务停止中返回。

STOPPED

任务已停止后返回。

FAILED

在任务启动失败后返回。

错误说明

说明

仅当事件类型(eventType)取值为异常恢复中(TaskRecovering)、启动失败(TaskStartFailed)以及更新失败(TaskUpdateFailed)这三种类型时不为空,其他类型为空。

事件类型(eventType)

错误码(errorCode)

错误信息(errorMessage)

含义

启动失败(TaskStartFailed)

StartTaskError

Channel already closed

频道已关闭。

Start task error

其他原因。

异常恢复中(TaskRecovering)

RunTaskError

The rms task failed

混流模块运行异常。

The record task failed

录制模块运行异常。

更新失败(TaskUpdateFailed)

UpdateTaskError

Update task error

任务更新失败。

录制异常恢复超时(RecordFailed)

RunTaskError

Recovering status timeout

异常恢复超时。

回调示例

{
    "appId": "mytestappid",
    "callbackTs": 1755504873034,
    "channelId": "room1047",
    "eventType": "TaskStopped",
    "payload": "{\"eventTs\":1755504873014,\"taskStatus\":\"STOPPED\",\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"\",\"recordFileList\":{\"mp3FileList\":[],\"mp4FileList\":[\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.mp4\",\"mp4/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.mp4\"],\"hlsFileList\":[\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-15:59:16.m3u8\",\"hls/fe60a6e3-cecb-3fae-a8cf-3d2391f507a5/mytestappid_room1047_2025-08-18-16:02:16.m3u8\"],\"vodMediaList\":[]}}",
    "taskId": "fe60a6e3-cecb-3fae-a8cf-3d2391f507a5"
}