一、注意事项
阅读这篇之前,希望你已经了解腾讯云直播是如何配置回调功能、你是如何接收回调消息的,具体请参见 如何接收事件通知。
二、事件类型参数
| 事件类型 | 字段取值说明 |
| 推流异常事件 | event_type = 321 |
三、回调公共参数
| 字段名称 | 类型 | 说明 |
| t | int64 | 过期时间,事件通知签名过期 UNIX 时间戳。来自腾讯云的消息通知默认过期时间是10分钟,如果一条消息通知中的 t 值所指定的时间已经过期,则可以判定这条通知无效,进而可以防止网络重放攻击。t 的格式为十进制 UNIX 时间戳,即从1970年01月01日(UTC/GMT 的午夜)开始所经过的秒数。 |
| sign | string | 事件通知安全签名 sign = MD5(key + t)。说明:腾讯云把加密 key 和 t 进行字符串拼接后通过 MD5 计算得出 sign 值,并将其放在通知消息里,你的后台服务器在收到通知消息后可以根据同样的算法确认 sign 是否正确,进而确认消息是否确实来自腾讯云后台。 |
注意:说明:
注意:key 为功能配置 >直播回调 中的回调密钥,主要用于鉴权。为了保护你的数据信息安全,建议你填写。
注意:
四、推流异常回调消息参数
| 参数 | 类型 | 含义 |
| appid | int | 用户 APPID。 |
| user_ip | string | 用户推流 IP。 |
| data_time | int | 推流事件回调时间(单位ms)。 |
| domain | string | 推流域名。 |
| path | string | 推流路径。 |
| report_interval | int | 有异常事件时,上报间隔(单位ms)。 |
| sequence | string | 消息序列号,标识一次推流活动。 |
| stream_id | string | 直播流名称。 |
| stream_param | string | 用户推流 URL 所带参数。 |
| timeout | int | 回调请求的超时时间(单位ms)。 |
| abnormal_event | json | 详细异常事件组。 |
五、abnormal_event 内参数说明
| 参数 | 类型 | 含义 |
| count | int | 对应异常事件单位时间(上报间隔内)发生次数。 |
| customer_visible | string | 异常事件是否对客户可见,固定为“true”。 |
| detail | json | desc:异常事件描述。occur_time:异常事件发生 UNIX 时间戳。 |
| event_key | string | 异常事件中文描述的补充。 |
| type | int | 异常事件类型。 |
| type_desc_cn | string | 异常事件中文描述。 |
| type_desc_en | string | 异常事件英文描述。 |
异常事件类型
| 类型 | 含义 |
| 1 | 视频时间戳回退。 |
| 2 | 音频时间戳回退。 |
| 3 | 视频时间戳突然变大(大于1000ms)。 |
| 4 | 音频时间戳突然变大(大于1000ms)。 |
| 5 | chunk size 太大(大于8192)。 |
| 6 | 两帧视频到达时间太长(大于3000ms)。 |
| 7 | 两帧音频到达时间太长(大于1000ms)。 |
| 8 | 视频编码类型发生变化。 |
| 9 | 音频编码类型发生变化。 |
| 10 | 视频帧到来前没有 codec 头。 |
| 11 | 音频帧到来前没有 codec 头。 |
| 12 | 音频帧时间戳间隔太大。 |
| 13 | 音视频编解码格式不常用。 |
| 14 | 视频头无法解析。 |
| 15 | 视频帧率过低。 |
| 16 | GOP size 过大,目前超过10s认为过大。 |
六、回调消息示例
{ "abnormal_event":[ { "count":2, "customer_visible":"true", "detail":[ { "desc":"video frame arrive interval too long, interval=3046(msec)", "occur_time":1670588070569 }, { "desc":"video frame arrive interval too long, interval=2953(msec)", "occur_time":1670588073522 } ], "event_key":"", "type":6, "type_desc_cn":"视频帧到达时间差值大于1000ms", "type_desc_en":"video frame arrive interval bigger than 1000(ms)" }, { "count":2, "customer_visible":"true", "detail":[ { "desc":"audio frame arrive interval too long, interval=3009(msec)", "occur_time":1670588070532 }, { "desc":"audio frame arrive interval too long, interval=2917(msec)", "occur_time":1670588073486 } ], "event_key":"", "type":7, "type_desc_cn":"音频帧到达时间差值大于1000ms", "type_desc_en":"audio frame arrive interval bigger than 1000(ms)" } ], "appid":12345678, "user_ip":"1.1.1.1" "data_time":1670588074971, "domain":"example.push.com", "event_type":321, "interface":"general_callback", "path":"live", "report_interval":5000, "sequence":"000000000000000000", "stream_id":"teststream", "stream_param":"stream_param=test", "timeout":5000, "sign": "ca3e25e5dc17a6f9909a9ae7281e300d", "t": 1754623810}