禁播和流管理

最近更新时间:2019-06-10 14:40:26

与腾讯云后台通讯

您的服务器与腾讯云服务器的信息同步可以通过两种方式组合实现:

  • API 调用:腾讯云提供了直播相关的 API 接口,包括状态查询和状态管理等功能,供您的后台服务器调用。
  • 消息通知:腾讯云在直播流状态变更、录制文件生成等一系列事件发生时,能够以事件消息(JSON)的形式主动通知您的后台服务器,只需要您在腾讯云注册接收事件通知的回调 URL 即可实现。

API 调用

腾讯云提供了直播相关的 API 接口,包括状态查询和状态管理等功能,供您的后台服务器调用,详情请参见 云直播 API 概览文档。

调用方法

在您的服务端采用 HTTP 协议的 GET 请求方式(即调用参数直接拼接在 URL 中)进行调用即可,详细的调用方法在每个 API 的说明文档中都有示例参考。

安全机制

由于对 API 的调用采用的是普通的 HTTP 协议(出于性能考虑),这就需要一套行之有效的办法来确保您的服务器与腾讯云后台之间的通讯安全。

所有直播码相关的云端 API 都采用了同一种安全检查机制,t + sign 校验

  • t(过期时间):如果一个 API 请求或者通知中的 t 值所规定的时间已经过期,则可以判定这个请求或者通知为无效的,这样做可以防止网络重放攻击。t 的格式为 UNIX 时间戳,即从1970年01月01日(UTC/GMT 的午夜)开始所经过的秒数。

  • sign(安全签名):sign = MD5(key + t),即把加密 key 和 t 进行字符串拼接后,计算一下 md5 值。这里的 key 即 CGI 调用 key,您在腾讯云直播管理控制台 域名管理 中可以进行设置,步骤如下:

    1. 进入 域名管理 单击您的”推流域名“或者”拉流域名“后面的【管理】。
    2. 对于“播放域名”选择“访问控制”,对于“推流域名”选择“推流配置”。
    3. 单击”鉴权配置“的【编辑】,进行配置。

  • 安全原理
    由于 MD5 是不可逆的 HASH 算法,所以只要确保 KEY 不泄露,即使攻击者拿到很多对 t 和 sign 也无法反算出 KEY 值,进而无法进行伪装攻击。

  • 计算示例
    例如,我们现在的时间是2016-08-22 15:16:27,我们希望有效期是1分钟,也就是2016-08-22 15:17:27以后再收到携带这个 t 的请求或者通知即判定为非法的:

      t = "2016-08-22 15:17:27" = 1471850187

    假设我们的 key 是 5d41402abc4b2a76b9719d911017c592,那么我们计算的签名结果就是:

      sign = MD5(5d41402abc4b2a76b9719d911017c5921471850187) = b17971b51ba0fe5916ddcd96692e9fb3

错误码

  1. HTTP 错误 :
错误码 含义 备注
403 Forbidden 接口为了安全考虑开启了校验,若使用浏览器验证发现该错误,可检查下 cookie 里是否含有 skey。
404 Not Found 查看请求时是否带上 host。
  1. 接口通用返回错误:
错误信息 含义
appid is invalid appid 不合法,表示未开通该功能。
  1. 接口前端接入返回错误信息:
错误信息 含义
cmd is invalid cmd 不合法,表示未开通该功能。
sign invalid 鉴权计算错误,参见 安全机制
time expired 鉴权成功,但是超过了 URL 有效期,参见 安全机制
  1. 接口后端查询返回错误码:
错误码 错误信息 含义
0 query data successfully 本次查询成功,并返回结果数据。
1000 user is not registered for statapi 用户没有注册 statapi,请提工单到后台开通。
1001 user service for statapi was stopped 用户 statapi 访问服务已经被终止。
1201 internel/system error 内部系统错误,属于系统异常,建议通过工单反馈到服务商。
1202 invalid request/request frequency exceeds limit 无效的请求,一般是超过了频控次数,如果频率不能满足业务需要,可申请增加次数。
1204 invalid input param 输入参数错误,请检查下输入的参数是否符合接口规范。
1301 has not live stream 没有活跃的流,在调用实时接口时会返回改错误码。
10003 query data is empty 后端查询数据成功,但是返回数据为空。例如,某时间段没有播放,此时调用接口 Get_LivePlayStatHistory 就会返回10003。

注意:

以上错误码针对本文 API 列表中的 API,不包括 消息事件通知

消息通知

详情请参见腾讯云事件 消息通知 服务。