精华内容
下载资源
问答
  • blob加密
    2021-04-17 11:46:29

    本文是利用腾讯云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"; // 防盗链key
            HashMap<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

    更多相关内容
  • <video id=my-video class=video-js playsinline controls preload=auto controlslist=nodownload controlslist=nofullscreen width=100% height=240 poster=upload/moviepic/2019-08-02/1564739500xyzp.png ...
  • 支持使用VideoJs播放MP4视频,并且通过blob加密视频源地址,避免直接暴露视频URL,防盗链
  • blob加密视频源地址截图 1 blob加密视频源地址截图 2 [ 视频安全 ] 相关原创文章 教育教学类视频如何处理加密与安全(组图) 防止360浏览器小窗下载视频 视频安全之视频播放密码功能(设置观看密码功能...

     阿酷TONY / 原创 /2021-9-23

    • blob类型视频调用,并不太适合用于纯mp4类视频文件;
    • blob视频比较适合调用m3u8类分片索引视频。

    Blob
    Blob 对象表示一个不可变、原始数据的类文件对象。它的数据可以按文本或二进制的格式进行读取,也可以转换成 ReadableStream 来用于数据操作。 

    Blob 表示的不一定是JavaScript原生格式的数据。File 接口基于Blob,继承了 blob 的功能并将其扩展使其支持用户系统上的文件。

    要从其他非blob对象和数据构造一个 Blob,请使用 Blob() 构造函数。要创建一个 blob 数据的子集 blob,请使用 slice() 方法。要获取用户文件系统上的文件对应的 Blob 对象,请参阅 File 文档。

    接受 Blob 对象的API也被列在 File 文档中。

    注意:slice() 方法原本接受 length 作为第二个参数,以表示复制到新 Blob 对象的字节数。如果设置的参数使 start + length 超出了源 Blob 对象的大小,则返回从开始到结尾的所有数据。
    注意:slice() 方法在某些浏览器和版本上带有浏览器引擎前缀:比如 Firefox 12 及更早版本的blob.mozSlice() 和 Safari 中的blob.webkitSlice()。 没有浏览器引擎前缀的老版本 slice() 方法有不同的语义,并且已过时。Firefox 30 取消了对 blob.mozSlice() 的支持。

    构造函数
    Blob(blobParts[, options])
    返回一个新创建的 Blob 对象,其内容由参数中给定的数组串联组成。
    属性
    Blob.size 只读
    Blob 对象中所包含数据的大小(字节)。
    Blob.type 只读
    一个字符串,表明该 Blob 对象所包含数据的 MIME 类型。如果类型未知,则该值为空字符串。
    方法
    Blob.slice([start[, end[, contentType]]])
    返回一个新的 Blob 对象,包含了源 Blob 对象中指定范围内的数据。
    Blob.stream()
    返回一个能读取blob内容的 ReadableStream。
    Blob.text()
    返回一个promise且包含blob所有内容的UTF-8格式的 USVString。
    Blob.arrayBuffer()
    返回一个promise且包含blob所有内容的二进制格式的 ArrayBuffer 

    var video = document.getElementById("my-video");
    
            window.URL = window.URL || window.webkitURL; //用来判断电脑系统window.webkitURL和window.URL是一样的,window.URL标准定义,window.webkitURL是webkit内核的实现,一般手机上就是使用这个,还有火狐等浏览器的实现。
            var xhr = new XMLHttpRequest();  // 实现数据请求 进行http协议的通信
            var play_url = "test.mp4" //网上的视频地址
            **注意,大部分视频地址都有跨域问题,在服务器上应设置好跨域的问题方便前端请求使用**
            xhr.open("GET", play_url, true);  //打开一个地址,请求类型 地址 异步或同步 
            xhr.responseType = "blob";  // 设置返回值 为blob对象    
            xhr.onload = function (e) { //请求后要执行的函数
                if (this.status == 200) { //成功 
                    var blob = this.response;  // 请求成功获取的参数 赋值给 “blob”
                    console.log(blob);
                    video.src = window.URL.createObjectURL(blob); //创建一个对象 视频只需要获取一次, 获取一次后,就需要释放这个对象。
                    // video.onload = function () { //获取到video 后执行的函数 ?
                        // window.URL.revokeObjectURL(video.src); //释放这个对象
                    // };
                }
            }
            xhr.send(); //发送请求
    

     

      blob加密视频源地址截图 1

     blob加密视频源地址截图 2

     [ 视频安全 ] 相关原创文章

    [ 视频直播 ] 相关原创文章

    [ 视频存储与应用 ] 相关原创文章

    [ 视频播放器 ] 相关文章

    [ WebRTC ] 相关文章

    [ 谷歌浏览器 ] 相关文章

    [ 微信公众号运营 ] 相关文章

    展开全文
  • JS blob加密

    2020-04-09 18:05:13
    <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gbk"> </head> <...blob video demo</h2> <video id="sound" width="...
    <html>
    
    <head>
    
        <meta http-equiv="Content-Type" content="text/html; charset=gbk">
    
    </head>
    
    <body>
    
    <h2>blob video demo</h2>
    
    <video id="sound" width="500" height="300" controls="controls"></video>
    
    <script type="text/javascript">
    
        // //创建XMLHttpRequest对象
    
        var xhr = new XMLHttpRequest();
    
        //配置请求方式、请求地址以及是否同步
    
        xhr.open('get', './test.mp4')
    
        //设置请求结果类型为blob
    
        xhr.responseType = 'blob';
    
        //请求成功回调函数
    
        xhr.onload = function (e) {
    
            console.log(e.response);
    
            if (this.status == 200) {//请求成功
    
                //获取blob对象
    
                var blob = this.response;
    
                console.log(blob);
    
                //获取blob对象地址,并把值赋给容器
    
                document.getElementById('sound').src=URL.createObjectURL(blob);
    
            }
    
        };
    
        xhr.send();
    
    </script>
    
    </body>
    
    </html>
    

    在这里插入图片描述
    来自于:https://www.jianshu.com/p/f07112bf4302

    展开全文
  • Video src Blob加密路径

    2020-12-12 11:01:38
    Video src Blob加密路径 一种是Java 生成 Blob 二进制流 咱不会 另一种是前端 window.URL 生成的Blob的方式 ----html----- <video id="my-video" class="video-js" playsinline controls preload="auto" ...

    Video src Blob加密路径

    一种是Java 生成 Blob 二进制流 咱不会

    另一种是前端 window.URL 生成的Blob的方式

    ----html-----

     <video id="my-video" class="video-js" playsinline controls preload="auto" controlslist="nodownload" controlslist="nofullscreen">   
      </video>
    

    ----js----

    var video = document.getElementById("my-video");
    
            window.URL = window.URL || window.webkitURL; //用来判断电脑系统window.webkitURL和window.URL是一样的,window.URL标准定义,window.webkitURL是webkit内核的实现,一般手机上就是使用这个,还有火狐等浏览器的实现。
            var xhr = new XMLHttpRequest();  // 实现数据请求 进行http协议的通信
            var play_url = "test.mp4" //网上的视频地址
            **注意,大部分视频地址都有跨域问题,在服务器上应设置好跨域的问题方便前端请求使用**
            xhr.open("GET", play_url, true);  //打开一个地址,请求类型 地址 异步或同步 
            xhr.responseType = "blob";  // 设置返回值 为blob对象    
            xhr.onload = function (e) { //请求后要执行的函数
                if (this.status == 200) { //成功 
                    var blob = this.response;  // 请求成功获取的参数 赋值给 “blob”
                    console.log(blob);
                    video.src = window.URL.createObjectURL(blob); //创建一个对象 视频只需要获取一次, 获取一次后,就需要释放这个对象。
                    // video.onload = function () { //获取到video 后执行的函数 ?
                        // window.URL.revokeObjectURL(video.src); //释放这个对象
                    // };
                }
            }
            xhr.send(); //发送请求
    

    在这里插入图片描述
    这样就可以进行src 路径加密了, 改方法来源于网络。

    常见问题
    视频路径请求跨域问题
    视频加密会造成视频加载过慢,具体更具视频大小来。

    展开全文
  • 利用blob 加密防下载

    千次阅读 2019-07-01 16:48:49
    一些网站的视频为了防止下载,通常会采用blob加密的做法; 其实这不是特殊的视频传输协议,只是一种 HTML5 Video Blob格式。 并且大部分网页视频的格式都是 m3u8。 参考的内容: 图片/视频上传转成base64/blob格式 ...
  • 坑待完善:Python下载blob加密视频

    千次阅读 2022-03-28 19:02:20
    import requests from datetime import datetime import re import json import time import os #视频分类和视频列表URL的前一段url = "http://xxxxxxx/api/?d=pc&c=video&" #m3u8文件和ts文件的URL前一段 ...
  • 文章目录前言一、blob二、mediaSource三、后台处理四、代码展示1、后台代码2、前台代码1.... 前言 公司做的都是些企业官网,后台管理系统,忽然让做个视频播放功能,需求禁止用户下载视频...今天我们来用blob加密来处理,
  • 前端进行src地址blob加密处理

    千次阅读 2020-12-10 11:51:39
    前端进行src地址blob加密处理 这里我用的axios; async getBlob(url) { //发送请求 //return 返回axios 的请求值 return axios.get(url, { responseType: 'blob' }) .then(response => { if ...
  • 如何下载 blob 加密https://视频

    千次阅读 2022-03-12 19:30:42
    一. 首先下载m3u8文件,在当前视频页面按f12打开调试工具,有些笔记本需要按住fn点击网络,按f5或者重新刷新网页,如下图操作: 二.... 找到这些带序列号的.ts的视频文件,选择其中一个m3u8文件。...
  • 解密Blob加密的src拼接的url视频资源

    千次阅读 2019-08-29 14:26:55
    今日无bug,闲来观看视频,想下载后观看岂不美滋滋。。。 故F12开发者模式查看引用地址 甚是欣喜岂不很好下载,好吧是广告。。 接着看 <video src="blob:...blob加密 这点事能难到我? 顿时一...
  • blob:http://......例如: 出于好奇,研究了一番其实这种是 视频mp4格式转码m3u8格式 再分为多个小切片(多个小视频)结合 video.js 实现,这里我们讨论 如何把一个mp4地址加密blob链接在html5的 video标签展示先...
  • 通过BLOB加密视频文件

    千次阅读 2019-03-25 14:20:31
    现在许多视频在线观看网站,你如果打开chrome查看其video标签,会发现它的src是一个以blob:开头的地址。比如下面这里是B站的截图,可以看到他这里引入的并不是一个在线的视频存放地址,这样你通过爬虫脚本也无法下载...
  • 前台视频使用blob加密src路径

    千次阅读 2019-04-08 20:10:39
    前台Jq视频使用blob加密src路径 下面我们将video标签中的src使用blob进行加密,下面我们来看一个已加密视频的src的图片 加密截图 jsp页面jq前台加密代码截图: 视频名称: 后台像返回视频格式就可以了。 Java控制...
  • 如何提取网页中的blob加密视频

    万次阅读 2018-09-27 13:29:41
    如何提取网页中的blob加密视频 一、场景 一些网站的视频为了防止下载,通常会采用blob加密的做法,打开浏览器控制台F12后,是这样的: 视频网址:“blob:https://us.flukecal.com/ea2b5cdf-7e15-48xxxxxxx” 这样...
  • python爬取视频----blob加密

    千次阅读 2019-05-12 14:09:25
    视频地址经过blob加密,查看请求找到m3u8地址,获取ts视频文件地址和key 爬取ts文件并使用AES解密保存
  • 关于blob加密视频的基于m3u8和ts文件下载转MP4视频的python爬虫实现 首先谈一下这篇文章主要的爬虫对象,基本上都是一些视频网站(一些大厂会有自己独特的编码风格需要自行破解加密格式,所以很难实现,所以这篇文章...
  • 而当我一如既往的打开网站上课时,我突然习惯的按下了F12,然后找到了标签,可标签的src却是blob加密算法 直接打开src是打不开的,但是从Network里可以找到ts文件,这个就是整体视频的切片了。 如果想下载视频有2...
  • 下载video标签内经blob加密的src资源

    万次阅读 2018-11-17 18:03:33
    起因:看到网易云上的MV,想下载但是F12后发现video标签内src链接是blob加密后的,没有源地址,怎么办呢?经过网上查询,找到了一种方法。 如图所示,视频链接用blob方法加密。 方法:编辑video标签,将链接放入...
  • 记一次破解blob加密视频网站的过程

    万次阅读 热门讨论 2019-01-17 17:20:36
    现在很多主流的视频网站几乎都是用到了blob加密(其实也不算是加密),效果是隐藏了视频源的地址,其背后的本质还是通过一段执行一段js拿到视频的切片文件,然后进行拼接播放。就像下面这样的 其实对于普通情况...
  • 对视频播放url进行Blob加密

    千次阅读 2018-09-20 09:51:30
    在知乎上看到一个视频,准备下载下来,结果下载不了,复制地址发现是blob://xxx。...百度发现是对视频地址进行了blob加密,文章地址:https://blog.csdn.net/qq_36688143/article/details/79162013。 下面是使用Java...
  • js获取Blob加密图片url

    千次阅读 2018-01-25 15:02:54
    原文链接:... 1)使用 XMLHttpRequest 对象获取图片url的Blob值 //获取图片的Blob值 function getImageBlob(url, cb) { var xhr = new XMLHttpRequest(); xhr.open(
  • javascript实现blob加密视频源地址

    千次阅读 2019-08-07 18:27:00
    ... < video id ="my-video" ... playsinline controls ... window.URL.createObjectURL(blob); } } xhr.send(); 三、效果图如下: 转载于:https://www.cnblogs.com/phperlinxinlan/p/11317031.html
  • x一些网站的视频为了防止下载,通常会采用blob加密的做法,打开浏览器控制台F12后,是这样的,想下载就很头疼。 这样是无法下载的,即使去掉blob前缀,搜索之后会报错或找不到,这就很尴尬了 这里需要两个插件:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 20,758
精华内容 8,303
关键字:

blob加密