有奖捉虫:行业应用 & 管理与支持文档专题 HOT
播放器签名,用于 App 播放服务对终端的授权播放。如下图步骤5所示,若 App 播放服务允许终端播放,则派发一个合法的签名。终端在签名有效时间内可以播放视频内容。


注意:
当有如下情况之一时,App 终端需要播放器签名才能播放:
域名开启了 KEY 防盗链
使用了 default 以外的 播放器配置
播放 加密 的视频内容。
下面,将介绍播放器签名的参数组成和生成规则。

签名参数

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

UrlAccessInfo 类型

参数名称
必选
类型
说明
t
String
16进制字符串,表示链接的过期时间。
具体含义和取值参见 防盗链参数 中的 t 参数。
不填表示不过期。
exper
Integer
试看时长,单位为秒,以十进制表示。
如果要指定试看时长,时长必须不小于30秒。
具体含义和取值参见 防盗链参数 中的 exper 参数。
rlimit
Integer
最多允许多少个不同 IP 的终端播放,以十进制表示。
具体含义和取值参见 防盗链参数 中的 rlimit 参数。
us
String
链接标识,用户增强链接的唯一性。
具体含义和取值参见 防盗链参数 中的 us 参数。
uv
String
播放者的 ID,以十六进制表示,共6位,该参数用于 溯源水印 使用场景。
具体含义和取值参见 防盗链参数 中的 uv 参数。

DrmLicenseInfo 类型

参数名称
必选
类型
说明
expireTimeStamp
Integer
密钥的到期 Unix 时间戳,不填表示不过期。
说明:
如果您使用了 子应用,则 appId 参数需要填子应用 AppId。
签名参数中的texperrlimitusuv的含义和取值,与 防盗链参数 中的同名参数完全一致。

签名计算

点播播放器签名采用 JWT(JSON Web Token),一种由 Header、PayLoad 和 Key 计算并组合得到的数字令牌。
Header 为 JSON 格式,表示 JWT 使用的算法信息,固定使用如下内容:
{
"alg": "HS256",
"typ": "JWT"
}

PayLoad

Payload 为 JSON 格式,是播放器签名参数的内容,例如:
{
"appId": 1255566655,
"fileId": "4564972818519602447",
"currentTimeStamp": 1546300,
"expireTimeStamp": 1546344000,
"urlAccessInfo": {
"t": "5c2b5640",
"rlimit": 3,
"us": "72d4cd1101",
"uv": "1234ab"
}
}

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 时间是1546300
播放器签名的过期时间为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",
"uv": "1234ab"
}
}
经过 base64UrlEncode 后的结果是: eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSIsInV2IjoiMTIzNGFiIn19
3. 24FEQmTzro4V5u3D5epW为 KEY 进行 HMAC 计算,Signature 是: j3WJ9W3V4ve_N_Z157_B9AKkT0GhSmGAEdhv6YtoZSY
4. 最终 Token 是: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImN1cnJlbnRUaW1lU3RhbXAiOjE1NDYzNDA0MDAsImV4cGlyZVRpbWVTdGFtcCI6MTU0NjM0NDAwMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNWMyYjU2NDAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSIsInV2IjoiMTIzNGFiIn19.qdetnVzAxDrvrlDB-3drnKCzHwX-2QFLfJ1juOQnbls

代码示例

云点播提供了 Python、Java、Go、C#、PHP 和 Node.js 等多种语言的播放器签名的代码示例,具体请参见 播放器签名 - 签名示例