腾讯云云点播播放器签名_音视频解决方案_同尘科技

云点播 2年前 (2023-06-21) 浏览 94

播放器签名,用于 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。签名参数中的 texperrlimitus 的含义和取值,与 防盗链参数 中的同名参数完全一致。

签名计算

点播播放器签名采用 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 后的结果是:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ92. Payload 的内容为:

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

经过 base64UrlEncode 后的结果是:
eyJhcHBJZCI6MTI1NTU2NjY1NSwiZmlsZUlkIjoiNDU2NDk3MjgxODUxOTYwMjQ0NyIsImNvbnRlbnRJbmZvMSI6eyJhdWRpb1ZpZGVvVHlwZSI6IlJhd0FkYXB0aXZlIiwicmF3QWRhcHRpdmVEZWZpbml0aW9uIjoxMCwiaW1hZ2VTcHJpdGVEZWZpbml0aW9uIjoxMH0sImN1cnJlbnRUaW1lU3RhbXAiOjE2NjMwNjQyNzYsImV4cGlyZVRpbWVTdGFtcCI6MTY2MzI5NDIxMCwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiNjMyM2U2YjAiLCJybGltaXQiOjMsInVzIjoiNzJkNGNkMTEwMSJ9fQ3. 以播放密钥作为 Key(即 TxtyhLlgo7J3iOADIron)进行 HMAC 计算,Signature 是:
QFcBX9830ysTzJIyZxoOlRmNb2Gqy2fns9yOfriaDI84. 最终 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折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心,购买腾讯云享受折上折,更有现金返利:同意关联,立享优惠

阿里云解决方案也看看?: 点击对比阿里云的解决方案

- 0人点赞 -

发表点评 (0条)

not found

暂无评论,你要说点什么吗?