tencent cloud

文档反馈

播放器签名

最后更新时间:2023-10-09 17:38:57
    播放器签名,用于 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 类型

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

    签名计算

    点播播放器签名采用 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"(拼写错误,不是有效的枚举值)。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持