云端录制回调信息说明

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

云端录制回调重试机制

若接收到的响应错误码大于等于 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

录制异常恢复超时。

RecordFileUploaded

录制文件成功上传。

其他信息(payload)说明

参数名

类型

描述

eventTs

integer

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

例如:1744774345595。

taskStatus

string

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

说明

当事件类型(eventType)为录制文件成功上传(RecordFileUploaded)时不会返回。

errorCode

string

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

errorMessage

string

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

recordFileList

FileList

录制文件列表。详细参数说明请参考录制文件列表说明表

说明

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

recordFile

RecordFile

录制文件信息。仅当事件类型为录制文件成功上传(RecordFileUploaded)时返回。详细参数说明请参考录制文件信息说明表

format

string

录制文件格式。仅当事件类型为录制文件成功上传(RecordFileUploaded)时返回,表示本次回调对应的文件格式。取值:

  • SLICE(暂不支持)

  • HLS

  • MP4

  • MP3

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;

录制文件列表FileList)说明

参数名

类型

描述

mp3FileList

array<string>

mp3格式录制文件名数组。

mp4FileList

array<string>

mp4格式录制文件名数组。

hlsFileList

array<string>

HLS格式录制文件名数组。

vodMediaList

array<VodFileInfo>

VOD 媒体资源数组,仅当录制到VOD时非空。录制到 VOD 时,订阅的各个流的录制文件集合,其中每一项对应着一个订阅流。VodFileInfo类型的详细参数说明请参考VOD文件信息说明表

VOD文件信息VodFileInfo)说明

参数名

类型

描述

stream

string

表示订阅的流

  • 对于混流录制,值统一为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

mediaIds

array<string>

录制过程中生成的媒体资源ID数组。

mergedIds

array<string>

录制结束后生成的自动合并的媒体资源ID数组。仅当存储到VOD时,指定了自动合并,并且录制了1个以上的媒体资源时非空。

录制文件信息RecordFile)说明

参数名

类型

描述

sliceFile

string

NotifyFileUploadedFormat参数指定时返回。

hlsFile

string

NotifyFileUploadedFormat参数指定时返回。

mp4File

string

NotifyFileUploadedFormat参数指定时返回。

mp3File

string

NotifyFileUploadedFormat参数指定时返回。

任务状态(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

异常恢复超时。

回调示例

TaskStopped事件:

{
    "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"
}

RecordFileUploaded事件:

{
    "appId":"mytestappid",
    "callbackTs":1764301584289,
    "channelId":"room1406",
    "eventType":"RecordFileUploaded",
    "payload":"{\"eventTs\":1764301584265,\"errorCode\":\"\",\"errorMessage\":\"\",\"streamInfo\":\"Single::userA::AV::C\",\"format\":\"MP4\",\"recordFile\":{\"sliceFile\":\"\",\"hlsFile\":\"\",\"mp3File\":\"\",\"mp4File\":\"mp4/07c2e845-630d-36a1-b2d1-3b546efdea90/mytestappid_room1406_userA_2025-11-28-11:46:03.mp4\"}}",
    "taskId":"07c2e845-630d-36a1-b2d1-3b546efdea90"}