视频实现blob加密
本文是利用腾讯云api和sdk进行视频的加密处理和播放,前提是视频都是放在腾讯云的云点播中,并且开启了防盗链,开启防盗链这里不做介绍。
腾讯云主要是对视频进行了blob加密,然后利用腾讯的超级播放器进行播放,加密后的视频路径变为:blob:https://console.cloud.tencent.com/6808765f-af9c-4940-96fe-60a607cb242d,可以防止复制链接下载。
媒资处理会产生费用,由腾讯云收取。
视频加密总共分两步:
1,对视频指定任务流模板,可以理解为加密操作。
2,播放时,获取视频的签名,可以理解为解密操作。
引入依赖:
<dependency><groupId>com.qcloud</groupId><artifactId>vod_api</artifactId><version>2.1.4</version></dependency><dependency><groupId>com.auth0</groupId><artifactId>java-jwt</artifactId><version>3.10.3</version></dependency>
后端:
package com.core.utils;import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;import com.tencentcloudapi.vod.v20180717.VodClient;
import com.tencentcloudapi.vod.v20180717.models.*;
import java.util.*;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTCreationException;
import com.auth0.jwt.JWT;
import lombok.extern.slf4j.Slf4j;/*** Author:zhushimeng* Date:2021-04_16 15:34* Description: 上传到腾讯云的视频加密工具类*/
@Slf4j
public class TencentVideoEncUtils {private static String secretId = "XXXXXXXXXXXXXX";private static String secretKey = "XXXXXXXXXXXXXX";private static String endpoint = "vod.tencentcloudapi.com";private static String taskTemplate = "SimpleAesEncryptPreset";// 任务流模板/*** 上传视频后,设置任务流模板,模板名称:SimpleAesEncryptPreset*/public static void setTaskTemplate(String fileId) {try{Credential cred = new Credential(secretId, secretKey);HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint(endpoint);ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);VodClient client = new VodClient(cred, "", clientProfile);ProcessMediaByProcedureRequest req = new ProcessMediaByProcedureRequest();req.setFileId(fileId);req.setProcedureName(taskTemplate);req.setSubAppId(1500001234L);ProcessMediaByProcedureResponse resp = client.ProcessMediaByProcedure(req);System.out.println(ProcessMediaByProcedureResponse.toJsonString(resp));log.info("设置任务流模板成功,fileId="+fileId+", 返回信息:"+ProcessMediaByProcedureResponse.toJsonString(resp));} catch (TencentCloudSDKException e) {log.error("设置任务流模板失败,fileId="+fileId+", 错误信息:"+e.toString());}}/*** 生成psign签名,播放时使用* @param fileId* @return*/public static String getPsign(String fileId) {Integer AppId = 1500001234;Integer CurrentTime = Integer.valueOf(DateUtils.getUnixTimeStamp());Integer PsignExpire = null;String UrlTimeExpire = "";String Key = "XXXXXXXXXXXXXX"; // 防盗链keyHashMap<String, String> urlAccessInfo = new HashMap<String, String>();//urlAccessInfo.put("t", UrlTimeExpire);String token = "";try {Algorithm algorithm = Algorithm.HMAC256(Key);token = JWT.create().withClaim("appId", AppId).withClaim("fileId", fileId).withClaim("currentTimeStamp", CurrentTime)//.withClaim("expireTimeStamp", PsignExpire)//.withClaim("urlAccessInfo", urlAccessInfo).withClaim("pcfg", "basicDrmPreset") // 超级播放器配置参数.sign(algorithm);log.info("生成psign成功,psign="+token);} catch (JWTCreationException exception) {log.error("生成psign失败,fileId="+fileId);}return token;}
}
前端:
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"><meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, shrink-to-fit=no"><title>腾讯云视频点播示例</title><!-- 引入播放器 css 文件 --><link href="//cloudcache.tencent-cloud.com/open/qcloud/video/tcplayer/tcplayer.css" rel="stylesheet"><!-- 如需在IE8、9浏览器中初始化播放器,浏览器需支持Flash并在页面中引入 --><!--[if lt IE 9]><script src="//cloudcache.tencent-cloud.com/open/qcloud/video/tcplayer/ie8/videojs-ie8.js"></script><![endif]--><!-- 如果需要在 Chrome 和 Firefox 等现代浏览器中通过 H5 播放 HLS 格式的视频,需要在 tcplayer.v4.1.min.js 之前引入 hls.min.0.13.2m.js --><script src="//imgcache.qq.com/open/qcloud/video/tcplayer/libs/hls.min.0.13.2m.js"></script><!-- 引入播放器 js 文件 --><script src="//imgcache.qq.com/open/qcloud/video/tcplayer/tcplayer.v4.1.min.js"></script><!-- 示例 CSS 样式可自行删除 --></head><body><!-- 设置播放器容器 --><video id="player-container-id" preload="auto" width="600" height="400" playsinline webkit-playsinline x5-playsinline></video><!--注意事项:* 播放器容器必须为 video 标签* player-container-id 为播放器容器的ID,可自行设置* 播放器区域的尺寸请按需设置,建议通过 css 进行设置,通过css可实现容器自适应等效果* playsinline webkit-playsinline x5-playsinline 这几个属性是为了在标准移动端浏览器不劫持视频播放的情况下实现行内播放,此处仅作示例,请按需使用--><script>var player = TCPlayer("player-container-id", { /**player-container-id 为播放器容器ID,必须与html中一致*/fileID: "5285890888424915555", /**请传入需要播放的视频fileID 必须 */appID: "1500001234", /**请传入点播账号的子应用appID 必须 */psign: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhcHBJZCI6MTUwMDAwMzU4MCwiZmlsZUlkIjoiNTI4NTg5MDgxNjQyNDkxNjcyMSIsImN1cnJlbnRUaW1lU3RhbXAiOjE2MTg2MzgzNjQsImV4cGlyZVRpbWVTdGFtcCI6MTYxODcyNDc2MiwicGNmZyI6ImJhc2ljRHJtUHJlc2V0IiwidXJsQWNjZXNzSW5mbyI6eyJ0IjoiMTYxODcyNDc2MiJ9fQ.hnAkY52_NAB07B5SOxQ96pLa8Sa-aUiFk4opk6ZREv4"/**其他参数请在开发文档中查看 */});</script></body>
</html>
腾讯云文档地址:
视频加密流程:https://cloud.tencent.com/document/product/266/46220
API Explorer(指定任务流模板):https://console.cloud.tencent.com/api/explorer?Product=vod&Version=2018-07-17&Action=ProcessMediaByProcedure&SignVersion=
超级播放器签名:https://cloud.tencent.com/document/product/266/45554
超级播放器签名示例:https://cloud.tencent.com/document/product/266/42437
签名工具:https://vods.cloud.tencent.com/signature/super-player-sign.html
媒资处理费用地址:https://cloud.tencent.com/document/product/266/14666#.E5.AA.92.E8.B5.84.E5.A4.84.E7.90.86.3Ca-id.3D.22media_edit.22.3E.3C.2Fa.3E
视频实现blob加密相关推荐
- 别想盗我视频之——blob加密+mediaSource防止用户下载视频
文章目录 前言 一.blob 二.mediaSource 三.后台处理 四.代码展示 1.后台代码 2.前台代码 1.无插件,纯H5 html js 2. 开源播放器插件 html js 相关报错 前 ...
- 如何提取网页中的blob加密视频
如何提取网页中的blob加密视频 一.场景 一些网站的视频为了防止下载,通常会采用blob加密的做法,打开浏览器控制台F12后,是这样的: 视频网址:"blob:https://us.flu ...
- 解密Blob加密的src拼接的url视频资源
今日无bug,闲来观看视频,想下载后观看岂不美滋滋... 故F12开发者模式查看引用地址 甚是欣喜岂不很好下载,好吧是广告.. 接着看 <video src="blob:https:/ ...
- 关于blob加密视频的基于m3u8和ts文件下载转MP4视频的python爬虫实现
关于blob加密视频的基于m3u8和ts文件下载转MP4视频的python爬虫实现 首先谈一下这篇文章主要的爬虫对象,基本上都是一些视频网站(一些大厂会有自己独特的编码风格需要自行破解加密格式,所以很 ...
- ViKey加密狗对视频文件进行加密
ViKey加密狗对视频文件进行加密 如果你手里有重要的视频文件,不想被别人随意看到,任意播放,那么你可以将这类视频文件用ViKey文件加密工具加密一下,加密过后的视频文件,必须要有ViKey加密狗才可 ...
- javascript 实现blob加密视频(html video),服务端为php
现在大部分的网站视频链接都是 blob:http://...... 例如: 出于好奇,研究了一番 其实这种是 视频mp4格式转码m3u8格式 再分为多个小切片(多个小视频)结合 video.js ...
- javascript实现blob加密视频源地址
一.HTML代码: <video id="my-video" class="video-js" playsinline controls preload= ...
- python爬取视频----blob加密
涉及知识点 AES解密 from Crypto.Cipher import AES 获取密钥:key = key_res.content 创建解密对象:cryptor = AES.new(key, A ...
- 如何下载 blob 加密https://视频
一. 首先下载m3u8文件,在当前视频页面按f12打开调试工具,有些笔记本需要按住fn点击网络,按f5或者重新刷新网页,如下图操作: 二. 在过滤器这里输入m3u8,如下图所示: 找到这些带序列号的. ...
- 使用ffmpeg视频切片并加密
想达到的目的:将一个mp4视频文件切割为多个ts片段,并在切割过程中对每一个片段使用 AES-128 加密,最后生成一个m3u8的视频索引文件: 电脑环境 Fedora,已经安装了最新的ffmpeg: ...
最新文章
- 针对七牛含有特殊字符的文件名,对特殊字符编码处理
- 驳《五大受损 全面解析PHP的糟糕设计》——为PHP正言
- golang 时间原点 时间日期格式化
- TCP的ACK原理和延迟确认机制
- UART 异步串行通信发送模块设计与实现
- Docker:unauthorized: incorrect username or password.
- UC伯克利造出会「轻功」的机器人,飞檐走壁,一条腿跳遍天下|湾区人工智能...
- 能行走如飞,会自己折叠:这个哈佛实验室有一群神奇的机器人
- 2016年计算机一级excel试题及答案,2016年计算机一级试题加答案
- 云呐-工单管理制度及流程,工单管理规范
- Django项目使用NGINX通过LDAP实现用户验证
- 还你清爽桌面!运行精灵软件(快速启动工具)试用测评
- matlab处理各种数据、文件
- 从头开始训练一个依存分析器
- 动手安装centOS6
- Postgresql - 查询表引用或被引用的外键
- Kali下载Python软件包管理工具
- 网络对抗 Exp5 MSF基础应用 20154311 王卓然
- Android 解压zip压缩包 (压缩包内有多级目录)
- 认知-认知能力:认知能力