云点播 播放器签名

播放器签名,用于 App 播放服务对终端的授权播放。如下图步骤 6 所示,若 App 播放服务允许终端播放,则派发一个合法的签名。终端在签名有效时间内可以播放视频内容。
。

相关产品
云点播 产品页,含版本规格、价格与购买入口。

下面,将介绍播放器签名的参数组成和生成规则。

一、签名参数

参数名称 必选 类型 说明
appId 是 Integer 点播应用 appId。
fileId 是 String 点播文件 ID。
contentInfo 是 Object 对应点播文件 ID 播放的具体内容,为 ContentInfo 类型,可播放下列三种中的一种:转自适应码流 的输出音视频,可以是未加密或加密的。转码 的输出音视频。上传 的原始音视频。
currentTimeStamp 是 Integer 派发签名当前 Unix 时间戳。
expireTimeStamp 否 Integer 派发签名到期 Unix 时间戳,不填表示不过期。
urlAccessInfo 否 Object 播放链接访问配置参数,包括 Key 防盗链 配置、播放域名与协议参数,为 UrlAccessInfo 类型。
drmLicenseInfo 否 Object DRM License 配置参数,为 DrmLicenseInfo 类型 。
ghostWatermarkInfo 否 Object 幽灵水印参数配置,为 GhostWatermarkInfo 类型。

二、ContentInfo 类型

参数名称 必选 类型 说明
audioVideoType 是 String 播放的音视频类型,可选值:RawAdaptive:未加密的 转自适应码流 输出。ProtectedAdaptive:私有加密或 DRM 保护的 转自适应码流 输出。Transcode:转码 后输出。Original:上传 的原始音视频。
rawAdaptiveDefinition 否 Integer 允许输出的未加密的 转自适应码流模板 ID,仅当 audioVideoType 为 RawAdaptive 该参数必填且有效。
drmAdaptiveInfo 否 Object 允许输出的加密保护的 转自适应码流模板 ID,仅当 audioVideoType 为 ProtectedAdaptive 该参数必填且有效,为 DRMAdaptiveInfo 类型。
transcodeDefinition 否 Integer 允许输出的 转码模板 ID,仅当 audioVideoType 为 Transcode 该参数必填且有效。
imageSpriteDefinition 否 Integer 用于进度条预览的 雪碧图模板 ID。
resolutionNames 否 Array of Object 播放器对于不同分辨率的子流展示名字,为 ResolutionNameInfo 类型 数组。不填或者填空数组则使用默认配置:MinEdgeLength:240,Name:240P。MinEdgeLength:480,Name:480P。MinEdgeLength:720,Name:720P。MinEdgeLength:1080,Name:1080P。MinEdgeLength:1440,Name:2K。MinEdgeLength:2160,Name:4K。MinEdgeLength:4320,Name:8K。

三、DRMAdaptiveInfo 类型

参数名称 必选 类型 说明
multiDrmDefinition 否 Integer 保护类型 DrmType 为 Widevine+FairPlay 的 转自适应码流模板 ID。
privateEncryptionDefinition 否 Integer 保护类型 DrmType 为 SimpleAES 的 转自适应码流模板 ID。
widevineDefinition 否 Integer 保护类型 DrmType 为 Widevine 的 转自适应码流模板 ID。
fairPlayDefinition 否 Integer 保护类型 DrmType 为 FairPlay 的 转自适应码流模板 ID。

四、ResolutionNameInfo 类型

参数名称 必选 类型 说明
MinEdgeLength 是 Integer 视频短边长度,单位:像素。
Name 是 String 展示名字。

五、UrlAccessInfo 类型

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

六、DrmLicenseInfo 类型

参数名称 必选 类型 说明
persistent 否 String 是否允许终端持久化保存商业级 DRM 播放许可证。取值范围:ON:允许持久化保存;OFF:不允许持久化保存。默认取值为 OFF。
rentalDuration 否 Integer 当 persistent 为 ON 时,商业级 DRM 播放许可证允许被持久化保存的时长,单位为秒,不填表示不限时长。
forceL1TrackTypes 否 Array of String 当使用 Widevine 时,要求终端必须使用 L1 安全级别处理的 Track 类型。其中,未指定的 Track 类型默认使用 L3 安全级别处理。取值如下:AUDIO:音频子流;SD:短边<720的子流;HD:720 ≤ 短边<2160的子流;UHD1:2160 ≤ 短边<4320的子流;UHD2:短边 ≥ 4320的子流。
minimumProtectionLevel 否 String 是否允许终端使用「基础」模式播放。取值:BASIC:允许使用「基础」模式播放;STANDARD:不允许使用「基础」模式播放。默认取值为 BASIC。

七、GhostWatermarkInfo 类型

参数名称 必选 类型 说明
text 是 String 幽灵水印内容。长度不超过64个字符。

注意:说明:

八、签名计算

点播播放器签名采用 JWT(JSON Web Token),一种由 Header、PayLoad 和 Key 计算并组合得到的数字令牌。

九、Header

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

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

十、PayLoad

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

{ "appId": 1255566655, "fileId": "4564972818519602447", "contentInfo": { "audioVideoType": "RawAdaptive", "rawAdaptiveDefinition": 10, "imageSpriteDefinition": 10 }, "currentTimeStamp": 1663064276, "expireTimeStamp": 1663294210, "urlAccessInfo": { "t": "6323e6b0", "rlimit": 3, "us": "72d4cd1101" }}

十一、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的视频生成播放器签名,并且:

·播放密钥为 TxtyhLlgo7J3iOADIron。

·播放器签名的派发时间为 2022-09-13 18:17:56,对应的 Unix 时间是 1663064276。

·播放器签名的过期时间为 2022-09-16 10:10:10,对应的 Unix 时间是 1663294210。

·防盗链的过期时间为 2022-09-16 11:00:00,对应的 Unix 时间是 6323e6b0。

·限制最多允许 3 个不同的 IP 播放 URL。

·生成的随机字符串是 72d4cd1101。

则签名步骤如下:

1. Header 的内容为:

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

经过 base64UrlEncode 后的结果是:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9

2. Payload 的内容为:

{ "appId": 1255566655, "fileId": "4564972818519602447", "contentInfo": { "audioVideoType": "RawAdaptive", "rawAdaptiveDefinition": 10, "imageSpriteDefinition": 10 }, "currentTimeStamp": 1663064276, "expireTimeStamp": 1663294210, "urlAccessInfo": { "t": "6323e6b0", "rlimit": 3, "us": "72d4cd1101" }}

经过 base64UrlEncode 后的结果是:
eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImNvbnRlbnRJbmZvMSI6eyJhdWRpb1ZpZGVvVHlwZSI6IlJhd0FkYXB0

aXZlIiwicmF3QWRhcHRpdmVEZWZpbml0aW9uIjoxMCwiaW1hZ2VTcHJpdGVEZWZpbml0aW9uIjoxMH0sImN1cnJlbnRUaW1lU3RhbXAiOjE2NjMwNjQyNzYsImV4

cGlyZVRpbWVTdGFtcCI6MTY2MzI5NDIxMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNjMyM2U2YjAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ

3. 以播放密钥作为 Key(即 TxtyhLlgo7J3iOADIron)进行 HMAC 计算,Signature 是:
QFcBX9830ysTzJIyZxoOlRmNb2Gqy2fns9yOfriaDI8

4. 最终 Token 是:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImNvbnRlbnRJbmZvMSI6eyJhdWRpb1ZpZGVvVHlwZSI6IlJhd0FkYXB0aXZlIiwicmF3QWRhcHRpdmVEZWZpbml0aW9uIjoxMCwiaW1hZ2VTcHJpdGVEZWZpbml0aW9uIjoxMH0sImN1cnJlbnRUaW1lU3RhbXAiOjE2NjMwNjQyNzYsImV4cGlyZVRpbWVTdGFtcCI6MTY2MzI5NDIxMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNjMyM2U2YjAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ.QFcBX9830ysTzJIyZxoOlRmNb2Gqy2fns9yOfriaDI8

十四、代码示例

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

十五、常见错误

如果你使用播放器签名,播放器 SDK 返回了错误码,较为常见的原因有:

·签名计算 KEY 用错,应该使用 默认分发配置 中的播放密钥,你可自查下是否误用为 KEY 防盗链参数 中的 KEY 参数。

·签名参数 填错,如:

·参数类型错误:例如 appId 为整型,错填为 appId:"125000123"(字符串型);又例如 contentInfo 里的转码模板参数为整型,错填为 transcodeDefinition: "14011"(字符串型)。

·参数取值超出有效范围:例如 contentInfo 里的播放的音视频类型参数,错填为 audioVideoType: "Transocde"(拼写错误,不是有效的枚举值)。

赞 (0)
上一篇 4天前
下一篇 4天前