更新时间:2024-04-15 GMT+08:00

配置录制回调

直播服务提供了录制文件生成状态回调设置,支持配置HTTP/HTTPS URL,向用户服务器发送POST请求、消息体JSON格式,将文件生成事件信息实时反馈到用户服务器。

前提条件

操作步骤

  1. 登录视频直播控制台。
  2. 在左侧导航栏中,选择域名管理,进入域名管理页面。
  3. 在需要创建录制回调的推流域名行,单击“管理”
  4. 在左侧导航树中,选择“模板配置 > 录制配置(新版)”,进入录制配置页面。
  5. 单击“新建回调配置”,弹出“添加回调配置”对话框。

    设置回调地址,如图1所示,回调参数说明请参见表1
    图1 添加录制回调URL
    表1 录制回调参数说明

    参数

    说明

    回调地址

    回调地址中不能携带消息头和参数,仅支持HTTP/HTTPS协议。推荐使用HTTPS协议。

    回调类型

    回调消息的类型,包含如下分类:

    • 录制文件生成完成
    • 录制开始
    • 创建新的录制文件
    • 录制结束
    • 录制失败

    各回调类型的详细说明请参见表2

    鉴权方式

    回调消息中的加密内容会根据选择的不同鉴权方式而有所不同。MD5方式可能存在安全风险,推荐使用HMACSHA256方式。

    • MD5方式:MD5(key + auth_timestamp)
    • HMACSHA256方式:HMACSHA256(auth_timestamp + event_type + publish_domain + app + stream + download_url + play_url,key)

    鉴权密钥

    鉴权key值。支持自定义设置,由32位的字母和数字组成。

修改/删除录制回调配置

录制回调配置完成后,您还可以根据实际需要进行如下操作。

  • 修改录制回调配置

    录制回调配置完成后,若您需要修改部分参数,可以在录制模板回调配置列表中,单击操作列的“修改”,修改录制回调配置中的相关参数。

  • 删除录制回调配置

    录制回调配置完成后,若您需要删除录制回调配置,可以在录制回调配置列表中,单击操作列的“删除”,删除该录制回调配置。

回调示例

录制文件生成事件回调示例如下。回调消息体字段如表2所示。

{
    "project_id": "70b76xxxxxx34253880af501cdxxxxxx",
    "job_id": "dc0a1773-0cef-xxxx-xxxx-9a38fdb095d2",
    "task_id": "51126d0ebe94b1da00d2e21a10xxxxxx",
    "event_type": "RECORD_FILE_COMPLETE",
    "publish_domain": "push.example.com",
    "app": "live",
    "stream": "mystream",
    "record_format": "HLS",
    "download_url": "https://obs.cn-north-4.myhuaweicloud.com/live/record-xxxx-mystream-1589967495/record-push.example.com-live-mystream-1589967495.m3u8",
    "asset_id": "1a0d8e9bfaexxxxxxbe5021e62aa1e96",
    "file_size": 3957964,
    "record_duration": 120,
    "start_time": "2020-03-08T14:10:25Z",
    "end_time": "2020-03-08T14:12:25Z",
    "width": 1280,
    "height": 720,
    "obs_location": "https://obs.cn-north-4.myhuaweicloud.com",
    "obs_bucket": "mybucket",
    "obs_object": "live/record-xxxx-mystream-1589967495/record-hwpublish.myun.tv-live-mystream-1589967495.m3u8",
    "auth_sign": "4f97f46759axxxxxx7ad21e9935dc175",
    "auth_timestamp": 1583676745
}
表2 消息体字段说明

字段

描述

project_id

项目ID。

job_id

用于标识同一个文件。当“event_type”“RECORD_NEW_FILE_START”“RECORD_FILE_COMPLETE”时,携带该字段。

task_id

录制任务ID,用于唯一标识一个录制任务。

event_type

消息类型。

取值如下:

  • RECORD_START:表示录制开始。若配置了录制模板和录制回调,则直播推流开始时,开始录制,触发该事件。
  • RECORD_NEW_FILE_START:表示开始创建新的录制文件。以下情况会触发该事件:
    • 直播推流开始,开始创建第一个录制文件。
    • 直播断流恢复后,若“最大断流合并时长”配置为“断流后生成新文件”,则开始创建新的录制文件。
    • 当前录制时长超过了配置的录制周期,则开始新的录制文件生成。
  • RECORD_FILE_COMPLETE:表示录制文件生成完成。以下情况会触发该事件:
    • 录制时长达到配置的录制周期,则当前录制文件生成完成,并开始新的录制生成。
    • 直播断流后,若“最大断流合并时长”配置为“断流后生成新文件”,则当前录制文件生成完成,若断流恢复,将开始新的录制文件生成。
  • RECORD_OVER:表示录制结束,直播断流时长超过了最大断流合并时长,当前录制任务结束,触发该事件。
  • RECORD_FAILED:表示录制失败,当拉流失败、录制文件上传OBS失败等因素导致录制失败时,触发该事件。

publish_domain

直播推流域名。

app

应用名。

stream

录制的流名。

record_format

录制格式,支持HLS、FLV和MP4格式。

download_url

录制文件的下载地址。当“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

说明:

使用该下载地址用于视频播放无法保证播放效果。

asset_id

用于标识一个录制文件。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

file_size

文件大小。

单位:Byte。

record_duration

录制文件的时长。

单位:秒。

start_time

录制文件的开始时间,即接收到第一帧数据的时间,格式为yyyy-mm-ddThh:mm:ssZ。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

end_time

录制文件的结束时间,格式为yyyy-mm-ddThh:mm:ssZ。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

width

录制文件分辨率的宽。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

height

录制文件分辨率的高。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

obs_location

存储录制文件的OBS桶所在区域。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

obs_bucket

存储录制文件的OBS桶。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

obs_object

OBS桶存储录制文件的路径。

“event_type”“RECORD_FILE_COMPLETE”时,携带该字段。

auth_sign

事件通知签名。当配置了“鉴权密钥”时,携带该字段。

  • MD5方式:auth_sign=MD5(key + auth_timestamp)
  • HMACSHA256方式:HMACSHA256(auth_timestamp + event_type + publish_domain + app + stream + download_url + play_url,key)

其中,key为鉴权密钥值。

auth_timestamp

事件通知签名过期UNIX时间戳。当配置了“鉴权密钥”时,携带该字段。

格式为十进制的UNIX时间戳,即从1970年1月1日(UTC/GMT的午夜)开始所经过的秒数。

若消息通知中的auth_timestamp值所指定的时间已经过期,则此消息通知无效,进而防止网络重放攻击。

error_message

录制失败的描述信息。

“event_type”“RECORD_FAILED”时,携带该字段。