帮你快速理解、总结文档立即下载

播放器签名

最近更新时间:2026-04-14 16:22:32
我的收藏
播放器签名,用于 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
widevineDefinition
否
Integer
fairPlayDefinition
否
Integer

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个字符。
说明:
如果您使用了 应用,则 appId 参数需要填应用 AppId。
签名参数中的 t、exper、rlimit、us 的含义和取值,与 防盗链参数 中的同名参数完全一致。

签名计算

点播播放器签名采用 JWT(JSON Web Token),一种由 Header、PayLoad 和 Key 计算并组合得到的数字令牌。
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"(拼写错误,不是有效的枚举值)。