服务端 API 文档

签名简介

最近更新时间:2020-05-14 13:02:15

使用超级播放器播放视频,若有如下情况之一:

  1. 域名开启了 KEY 防盗链
  2. 使用了 Default 以外的 超级播放器配置
  3. 需要播放 加密 的视频内容。

您需要按照规则生成超级播放器签名。若签名正确,即可播放相应的视频内容。

签名参数

参数名称 必选 类型 说明
appId Integer 账号 appId
fileId String 文件 ID
currentTimeStamp Integer 派发签名当前 Unix 时间戳
expireTimeStamp Integer 派发签名到期 Unix 时间戳,不填:表示签名派发后1天内过期
pcfg String 使用的超级播放配置名称。如果是 Default,可以不填
urlAccessInfo Object 播放链接的防盗链配置参数,为 UrlAccessInfo 类型
drmLicenseInfo Object 加密内容的密钥配置参数,为 DrmLicenseInfo 类型

UrlAccessInfo 类型

参数名称 必选 类型 说明
t String
  • 16进制字符串,表示链接的过期时间
  • 具体含义和取值参见 防盗链参数 中的 t 参数
  • 不填表示签名生成后1天内过期
exper Integer
  • 试看时长,单位为秒,以十进制表示
  • 如果要指定试看时长,时长必须不小于300秒(即5分钟)
  • 具体含义和取值参见 防盗链参数 中的 exper 参数
rlimit Integer
  • 最多允许多少个不同 IP 的终端播放,以十进制表示
  • 具体含义和取值参见 防盗链参数 中的 rlimit 参数
us String
  • 链接标识,用户增强链接的唯一性
  • 具体含义和取值参见 防盗链参数 中的 us 参数

DrmLicenseInfo 类型

参数名称 必选 类型 说明
expireTimeStamp Integer 密钥的到期 Unix 时间戳,不填:表示签名派发后1天过期
说明:

  • 如果您使用了 子应用,则 appId 参数需要填子应用 AppId。
  • 签名参数中的texperrlimitus的含义和取值,与 防盗链参数 中的同名参数完全一致。

签名计算

点播超级播放器签名采用 JWT,是由 Header、PayLoad 和 Key 计算获得的 Token。

Header 为 JSON 格式,表示 JWT 使用的算法信息,固定使用如下内容:

{
  "alg": "HS256",
  "typ": "JWT"
}

PayLoad

Payload 为 JSON 格式,是超级播放器签名参数的内容,例如:

{
  "appId": 1255566655,
  "fileId": "4564972818519602447",
  "currentTimeStamp": 1546340400,
  "expireTimeStamp": 1546344000,
  "urlAccessInfo": {
    "t": "5c2b5640",
    "rlimit": 3,
    "us": "72d4cd1101"
  }
}

Key

Key 是计算签名时使用的密钥,和 防盗链参数 中的KEY参数一致。

计算公式

  1. 计算 Signature:
    Signature = HMACSHA256(base64UrlEncode(Header) + "." + base64UrlEncode(Payload), KEY)
  2. 计算 Token:
    Token = base64UrlEncode(Header) + '.' + base64UrlEncode(Payload) + '.' + base64UrlEncode(Signature)
    最终得到的 Token,即为点播超级播放器签名。
说明:

HMACSHA256 请参见 RFC - HMACSHA256。base64UrlEncode 请参见 RFC - base64UrlEncode

为方便验证,您可以使用:

签名示例

例如,某用户 appId 是1255566655,fileId 是4564972818519602447的视频生成超级播放器签名,并且:

  • 开启的防盗链 KEY 为24FEQmTzro4V5u3D5epW
  • 使用自定义的超级播放器配置,自定义配置名为MyCfg
  • 播放器签名的派发时间为2019/1/1 19:00:00,对应的 Unix 时间是1546340400
  • 播放器签名的过期时间为2019/1/1 20:00:00,对应的 Unix 时间是1546344000
  • 防盗链的过期时间为2019/1/1 20:00:00,对应的 Unix 时间是5c2b5640
  • 限制最多允许3个不同的 IP 播放 URL。
  • 生成的随机字符串是72d4cd1101

则签名步骤如下:

  1. Header 的内容为:

    {
    "alg": "HS256",
    "typ": "JWT"
    }

    经过 base64UrlEncode 后的结果是:
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

  2. Payload 的内容为:

    {
    "appId": 1255566655,
    "fileId": "4564972818519602447",
    "currentTimeStamp": 1546340400,
    "expireTimeStamp": 1546344000,
    "urlAccessInfo": {
     "t": "5c2b5640",
     "rlimit": 3,
     "us": "72d4cd1101"
    }
    }

    经过 base64UrlEncode 后的结果是:
    eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ

  3. 24FEQmTzro4V5u3D5epW为 KEY 进行 HMAC 计算,Signature 是:
    TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8

  4. 最终 Token 是:
    eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ.TRdfy-ctQFRDJzknfKsT0di5tEaweAVumOgxsA8Qd-8

目录