腾讯云云点播播放器签名_音视频解决方案_同尘科技
播放器签名,用于 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 类型
参数名称 | 必选 | 类型 | 说明 |
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的子流。 |
GhostWatermarkInfo 类型
参数名称 | 必选 | 类型 | 说明 |
text | 是 | String | 幽灵水印内容。长度不超过64个字符。 |
说明:如果您使用了 子应用,则 appId 参数需要填子应用 AppId。签名参数中的 t
、exper
、rlimit
、us
的含义和取值,与 防盗链参数 中的同名参数完全一致。
签名计算
点播播放器签名采用 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"
(拼写错误,不是有效的枚举值)。
对音视频的解决方案有疑惑?想了解解决方案收费? 联系解决方案专家
腾讯云限时活动1折起,即将结束: 马上收藏
同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠
阿里云解决方案也看看?: 点击对比阿里云的解决方案
暂无评论,你要说点什么吗?