腾讯点播试看视频功能分享

腾讯点播试看视频功能分享

在这里插入图片描述

key防盗链:超级播放器签名 ,
代码如下

import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTCreationException;

import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
/**
  	* 腾讯云 点播--试看视频--签名
     * @author zj
 */
public class WatchVideoUtils {

    /**
     *
     * key--签名
     * @return
     */
    public static String getToken(Integer AppId,String FileId,Long CurrentTime,Long PsignExpire){
        String signature = "";
        AppId = AppId;//账号 appId
        FileId = FileId;//文件 ID
        CurrentTime = toNowDay();//派发签名当前 Unix 时间戳
        PsignExpire = toUnix(addOneDay());//派发签名到期 Unix 时间戳,不填表示不过期(3分钟)
        String UrlTimeExpire = to16Hex(addOneDay());//防盗链的过期时间(3分钟)
        String Key = "防盗链 KEY";//防盗链 KEY
        HashMap<String, Object> urlAccessInfo = new HashMap<String, Object>();
        urlAccessInfo.put("t", UrlTimeExpire);//
        urlAccessInfo.put("exper", 180);//试看时长(秒)
        try {
            Algorithm algorithm = Algorithm.HMAC256(Key);
            signature = JWT.create().withClaim("appId", AppId).withClaim("fileId", FileId)
                    .withClaim("currentTimeStamp", CurrentTime).withClaim("expireTimeStamp", PsignExpire)
                    .withClaim("urlAccessInfo", urlAccessInfo).sign(algorithm);
            //System.out.println("token:" + signature);
        } catch (JWTCreationException exception) {
            // Invalid Signing configuration / Couldn't convert Claims.
        }

        return signature;
    }

    /**
     * 将当前时间转换为16进制
     * @return
     */
    public static String to16Hex(Date date) {
        Long ab = date.getTime()/1000;
        String a = Long.toHexString(ab);
        return a;
    }

    /**
     * 将当前时间--unix时间
     * @return
     */
    public static Long toUnix(Date date) {
        Long ab = date.getTime()/1000L;
        return ab;
    }

    /**
     * 将当前时间加3分钟
     *
     */
    public static Date addOneDay() {
        Calendar cal = Calendar.getInstance();
        cal.add(Calendar.MINUTE, 3);
        Date date = cal.getTime();
        return date;
    }

    /**
     * 当前 Unix 时间戳
     * @return
     */
    public static Long toNowDay(){
        return  System.currentTimeMillis()/1000L;
    }



    public static void main(String[] args) {
            System.out.println("signature:" +getToken(' '," ",1589448067L,1589548067L));
            System.out.println(to16Hex(new Date()));
    }

}

温馨提示:
页面代码报错:
在这里插入图片描述
该bug是腾讯的这个js版本不对,需要更换为如下:

	<link href="https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.min.css" rel="stylesheet"/>
    <script src="https://imgcache.qq.com/open/qcloud/video/tcplayer/libs/hls.min.0.13.2m.js"></script>
    <!-- 引入播放器 js 文件 -->
    <script src="https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.v4.1.min.js"></script>
    
希望其他小伙伴不要跟我一样走坑
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值