视频直播 LIVE-直播事件回调:录制回调

时间:2024-07-25 19:53:31

录制回调

直播录制至OBS提供了录制回调功能,用于推送录制状态信息,包括录制开始、开始创建新的录制文件、录制文件生成完成、录制结束和录制失败。回调消息字段如表2所示。

表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)
  • HMA CS HA256方式: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”时,携带该字段。

消息示例如下所示:

  • 录制开始事件,即“event_type”=“RECORD_START”,若配置了录制模板和录制回调,则直播推流开始时,开始录制,产生该事件回调。
    {
      "project_id" : "70b76xxxxxx34253880af501cdxxxxxx",
      "publish_domain" : "push.example.com",
      "event_type" : "RECORD_START",
      "app" : "live",
      "stream" : "mystream",
      "record_format" : "HLS",
      "file_size" : 3957964,
      "record_duration" : 120
    }
support.huaweicloud.com/bestpractice-live/live_14_0003.html