tencent cloud

文档反馈

播放器签名示例

最后更新时间:2023-07-14 16:25:21

    Python 签名示例

    使用 pyjwt 库计算签名,请使用pip install pyjwt安装。
    
    #!/usr/bin/python
    #coding=utf-8
    
    import jwt
    
    AppId = 1255566655
    FileId = "4564972818519602447"
    AudioVideoType = "RawAdaptive"
    RawAdaptiveDefinition = 10
    ImageSpriteDefinition = 10
    CurrentTime = 1546340400
    PsignExpire = 1546344000
    UrlTimeExpire = "5c2b5640"
    PlayKey = "TxtyhLlgo7J3iOADIron"
    
    Original = {
    "appId": AppId,
    "fileId": FileId,
    "contentInfo": {
    "audioVideoType": AudioVideoType,
    "rawAdaptiveDefinition": RawAdaptiveDefinition,
    "imageSpriteDefinition": ImageSpriteDefinition
    },
    "currentTimeStamp": CurrentTime,
    "expireTimeStamp": PsignExpire,
    "urlAccessInfo": {
    "t": UrlTimeExpire
    }
    }
    
    Signature = jwt.encode(Original, PlayKey, algorithm='HS256')
    
    print("Original: ", Original)
    print("Signature: ", Signature)
    

    Java 签名示例

    使用 java-jwt 库计算签名。
    
    import java.util.*;
    import com.auth0.jwt.algorithms.Algorithm;
    import com.auth0.jwt.exceptions.JWTCreationException;
    import com.auth0.jwt.JWT;
    
    class Main {
    public static void main(String[] args) {
    Integer AppId = 1255566655;
    String FileId = "4564972818519602447";
    String AudioVideoType = "RawAdaptive";
    Integer RawAdaptiveDefinition = 10;
    Integer ImageSpriteDefinition = 10;
    Integer CurrentTime = 1589448067;
    Integer PsignExpire = 1589548067;
    String UrlTimeExpire = "5ebe9423‬";
    String PlayKey = "TxtyhLlgo7J3iOADIron";
    HashMap<String, Object> urlAccessInfo = new HashMap<String, Object>();
    urlAccessInfo.put("t", UrlTimeExpire);
    HashMap<String, Object> contentInfo = new HashMap<String, Object>();
    contentInfo.put("audioVideoType", AudioVideoType);
    contentInfo.put("rawAdaptiveDefinition", RawAdaptiveDefinition);
    contentInfo.put("imageSpriteDefinition", ImageSpriteDefinition);
    
    try {
    Algorithm algorithm = Algorithm.HMAC256(PlayKey);
    String token = JWT.create().withClaim("appId", AppId).withClaim("fileId", FileId)
    .withClaim("contentInfo", contentInfo)
    .withClaim("currentTimeStamp", CurrentTime).withClaim("expireTimeStamp", PsignExpire)
    .withClaim("urlAccessInfo", urlAccessInfo).sign(algorithm);
    System.out.println("token:" + token);
    } catch (JWTCreationException exception) {
    // Invalid Signing configuration / Couldn't convert Claims.
    }
    }
    }
    

    Go 签名示例

    使用 jwt-go 库计算签名,请使用命令go get github.com/dgrijalva/jwt-go进行安装。
    
    
    package main
    
    import (
    "fmt"
    "time"
    "strconv"
    "github.com/dgrijalva/jwt-go"
    )
    
    func main() {
    appId := 1255566655 // 用户 appid
    fileId := "4564972818519602447" // 目标 FileId
    audioVideoType := "RawAdaptive" // 播放的音视频类型
    rawAdaptiveDefinition := 10 // 允许输出的未加密的自适应码流模板 ID
    imageSpriteDefinition := 10 // 做进度条预览的雪碧图模板 ID
    currentTime := time.Now().Unix()
    psignExpire := currentTime + 3600 // 可任意设置过期时间,示例1h
    urlTimeExpire := strconv.FormatInt(psignExpire, 16) // 可任意设置过期时间,16进制字符串形式,示例1h
    playKey := []byte("TxtyhLlgo7J3iOADIron")
    
    // Create a new token object, specifying signing method and the claims
    // you would like it to contain.
    token := jwt.NewWithClaims(jwt.SigningMethodHS256, jwt.MapClaims{
    "appId": appId,
    "fileId": fileId,
    "contentInfo": {
    "audioVideoType": audioVideoType,
    "rawAdaptiveDefinition": rawAdaptiveDefinition,
    "imageSpriteDefinition": imageSpriteDefinition,
    },
    "currentTimeStamp": currentTime,
    "expireTimeStamp": psignExpire,
    "urlAccessInfo": map[string]string{
    "t": urlTimeExpire,
    },
    })
    
    // Sign and get the complete encoded token as a string using the secret
    tokenString, err := token.SignedString(playKey)
    
    fmt.Println(tokenString, err)
    }
    

    C# 签名示例

    使用 jose-jwt 计算签名,请使用 NuGet 命令Install-Package jose-jwt进行安装。
    
    using System;
    using System.Text;
    using System.Collections.Generic;
    using Jose;
    
    public class Program
    {
    public static void Main()
    {
    var appId = 1255566655; // 用户 appid
    var fileId = "4564972818519602447"; // 目标 FileId
    var audioVideoType = "RawAdaptive"; // 播放的音视频类型
    var rawAdaptiveDefinition = 10; // 允许输出的未加密的自适应码流模板 ID
    var imageSpriteDefinition = 10; // 做进度条预览的雪碧图模板 ID
    var currentTime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
    var psignExpire = currentTime + 3600; // 可任意设置过期时间,示例1h
    var urlTimeExpire = psignExpire.ToString("X4"); // 可任意设置过期时间,16进制形式,示例1h
    var playKey = "TxtyhLlgo7J3iOADIron";
    var playKeyBytes = Encoding.ASCII.GetBytes(playKey);
    var payload = new Dictionary<string, object>()
    {
    {"appId", appId},
    {"fileId", fileId},
    {"contentInfo", new Dictionary<string, object>()
    {
    {"audioVideoType", audioVideoType},
    {"rawAdaptiveDefinition", rawAdaptiveDefinition},
    {"imageSpriteDefinition", imageSpriteDefinition}
    }
    },
    {"currentTimeStamp", currentTime},
    {"expireTimeStamp", psignExpire},
    {"urlAccessInfo", new Dictionary<string, object>()
    {
    {"t", urlTimeExpire}
    }
    }
    };
    string token = Jose.JWT.Encode(payload, playKeyBytes, JwsAlgorithm.HS256);
    Console.WriteLine(token);
    }
    }
    

    PHP 签名示例

    使用 php-jwt 计算签名,请使用命令composer require firebase/php-jwt进行安装。
    
    <?php
    require 'vendor/autoload.php';
    use \\Firebase\\JWT\\JWT;
    
    $appId = 1255566655; // 用户 appid
    $fileId = "4564972818519602447"; // 目标 FileId
    $audioVideoType = "RawAdaptive"; // 播放的音视频类型
    $rawAdaptiveDefinition = 10; // 允许输出的未加密的自适应码流模板 ID
    $imageSpriteDefinition = 10; // 进度条预览的雪碧图模板 ID
    $currentTime = time();
    $psignExpire = $currentTime + 3600; // 可任意设置过期时间,示例1h
    $urlTimeExpire = dechex($psignExpire); // 可任意设置过期时间,16进制字符串形式,示例1h
    $playKey = "TxtyhLlgo7J3iOADIron";
    
    $payload = array(
    "appId" => $appId,
    "fileId" => $fileId,
    "contentInfo" => array(
    "audioVideoType"=> $audioVideoType,
    "rawAdaptiveDefinition"=> $rawAdaptiveDefinition,
    "imageSpriteDefinition"=> $imageSpriteDefinition
    ),
    "currentTimeStamp" => $currentTime,
    "expireTimeStamp" => $psignExpire,
    "urlAccessInfo" => array(
    "t" => $urlTimeExpire
    )
    );
    
    $jwt = JWT::encode($payload, $playKey, 'HS256');
    print_r($jwt);
    ?>
    

    Node.js 签名示例

    使用 jsonwebtoken 计算签名,请使用命令npm install jsonwebtoken进行安装。
    var jwt = require('jsonwebtoken');
    
    var appId = 1255566655 // 用户 appid
    var fileId = "4564972818519602447" // 目标 FileId
    var audioVideoType = "RawAdaptive" // 播放的音视频类型
    var rawAdaptiveDefinition = 10 // 允许输出的未加密的自适应码流模板 ID
    var imageSpriteDefinition = 10 // 做进度条预览的雪碧图模板 ID
    var currentTime = Math.floor(Date.now()/1000)
    var psignExpire = currentTime + 3600 // 可任意设置过期时间,示例1h
    var urlTimeExpire = psignExpire.toString(16) // 可任意设置过期时间,16进制字符串形式,示例1h
    var playKey = 'TxtyhLlgo7J3iOADIron'
    
    var payload = {
    appId: appId,
    fileId: fileId,
    contentInfo: {
    audioVideoType: audioVideoType,
    rawAdaptiveDefinition: rawAdaptiveDefinition,
    imageSpriteDefinition: imageSpriteDefinition
    },
    currentTimeStamp: currentTime,
    expireTimeStamp: psignExpire,
    urlAccessInfo: {
    t: urlTimeExpire
    }
    }
    var token = jwt.sign(payload, playKey);
    console.log(token);
    
    联系我们

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

    技术支持

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

    7x24 电话支持