您的位置 首页 > 腾讯云社区

云点播视频加密播放实践---你很甜的嘛

简介

云点播的 转自适应码流 功能,可以将视频转成多种分辨率并加密。播放加密后的视频,需要在终端集成 超级播放器 SDK 。

一、上传视频并转码机密

上传视频方式很多,可以控制台上传也可以集成SDK上传。这里就使用控制台上传。

上传时可以选择上传后自动进行视频处理,也可以选择稍后处理。这里就选择自动进行视频处理,选择【处理类型】选择“任务流”,【任务流模板】选择预设的“SimpleAesEncryptPreset”,也可以选择自定义的加密模板。

1-1 上传并自动加密转码

注意:

如果在上传后进行转自适应加密,自适应码流模板需要预先自定义创建,创建可以选择加密或者不加密。

二、签名计算

播放加密视频,需要使用 超级播放器签名,并开启 Key 防盗链 。

防盗链开启:控制台->【系统设置】->【分发播放设置】->【域名管理】,对分发的默认域名进行设置,防盗链开启需要大概5分钟生效。

2-1 防盗链开启

签名计算的方式有两种:一、在线签名工具;二、示例代码

1、在线签名

工具链接:https://vods.cloud.tencent.com/signature/super-player-sign.html

2-2 在线签名工具

必填的参数有:appid、fileid、currentTimeStamp、pcfg、防盗链Key。

appid:如果您使用了子应用,则参数需要填子应用 appId;

pcfg:如果使用是默认的自适应码流转码模板,计算签名时就填basicDrmPreset;如果使用的是自定义自适应码流转码模板,计算签名时填写控制台中配置的名称。

如何自定义pcfg:

控制台->系统设置->分发播放设置->超级播放器配置->新建

2-3 超级播放器配置新建2-4 新建超级播放器配置

2、示例代码

python参考代码

使用 JWT 库计算签名,请使用pip install pyjwt安装。

#!/usr/bin/python #coding=utf-8 import jwt AppId = 1255566655 FileId = "4564972818519602447" CurrentTime = 1546340400 PsignExpire = 1546344000 UrlTimeExpire = "5c2b5640" Key = "24FEQmTzro4V5u3D5epW" Original = { "appId": AppId, "fileId": FileId, "currentTimeStamp": CurrentTime, "expireTimeStamp": PsignExpire, "urlAccessInfo": { "t": UrlTimeExpire } } Signature = jwt.encode(Original, Key, algorithm='HS256') print("Original: ", Original) print("Signature: ", Signature

JAVA示例代码

jwt 版本号3.10.3

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"; Integer CurrentTime = 1546340400; Integer PsignExpire = 1546344000; String UrlTimeExpire = "5c2b5640"; String Key = "24FEQmTzro4V5u3D5epW"; HashMap<String, String> urlAccessInfo = new HashMap<String, String>(); urlAccessInfo.put("t", UrlTimeExpire); try { Algorithm algorithm = Algorithm.HMAC256(Key); String token = JWT.create().withClaim("appId", AppId).withClaim("fileId", FileId) .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. } } }

三、加密视频播放

以下主要以Web端播放器为例:

在页面集成超级播放器Web SDK,引入播放器样式文件与脚本文件。

<link href="https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.css" rel="stylesheet"> <!--如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.v4.min.js 之前引入 hls.js。--> <script src="https://imgcache.qq.com/open/qcloud/video/tcplayer/libs/hls.min.0.12.4.js"></script> <!--播放器脚本文件--> <script src="https://imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.v4.min.js"></script>

其中<tcplayer.v4.min.js>为新版SDK脚本,老版本的JS脚本<tcplayer.min.js>不支持播放自适应码流加密,使用老版本的脚本会报错。

视频播放需要添加以下参数,具体参考 超级播放器 Web 中的 HLS加密。

var player = TCPlayer('player-container-id', { fileID: '', // 请传入需要播放的视频 filID(必须) appID: '' // 请传入点播账号的 appID(必须) psign:'' });

集成后的demo:

↓↓↓↓↓↓

Demo

↑↑↑↑↑↑

当播放出现如下图所示时,表示基本的[上传-加密-播放]就成功啦!!!

2-5 demo界面FAQ:加密后得视频无法播放

F12看下NetWork,看下获取播放链接的错误码。

403 Forbidden有以下可能:

a. JS脚本引入的是老版本,需要替换为新版;

b. 签名计算错误,可以使用在线校验工具校验下;

c . 使用了自定义的转码模板,但在签名时pcfg选用的是默认模板对应的pcfg:SimpleAesEncryptPreset,未配置对应的超级播放器配置

示例:

403 示例

通过签名校验工具可以知道,签名链接过期,进一步得知,签名的expireTimeStamp时间过期了。

校验结果总结

云点播此次加密体系升级,主要调整在于增加了HLS自适应码流转码加密,加密【转码-播放】更加简单。欢迎大家对腾讯云点播多多支持!!!

---来自腾讯云社区的---你很甜的嘛

关于作者: 瞎采新闻

这里可以显示个人介绍!这里可以显示个人介绍!

热门文章

留言与评论(共有 0 条评论)
   
验证码: