防止video视频被下载的几种处理办法

这篇具有很好参考价值的文章主要介绍了防止video视频被下载的几种处理办法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,video禁用下载功能

<video controlslist="nodownload"></video>

2,隐藏鼠标右键,禁止复制链接

document.oncontextmenu = function () {
	return false;
}

3,使用云点播等第三方播放控件,最好的话设置一下防盗链;

4,使用blob视频流加密的形式;

部分浏览器,如qq浏览器会拦截video标签获取到播放链接,当用户鼠标移如播放器时会出现下载字样,为了解决这一问题,我们采用blob视频流的形式进行加密;

目前市面上采用这种方式的比较多:比如哔哩哔哩,西瓜视频等,如图:

防止video视频被下载的几种处理办法,前端,javascript,音视频

BLOB :二进制大对象,是一个可以存储二进制文件的容器。Video 使用 blob 二进制流需要前后端同时支持。

拿到blob对象后,再通过URL.createObjectURL生成临时地址,赋值给video标签的src属性,这样就可以了。但其实可以直接从服务端接收二进制对象,就是服务端把视频文件转换成二进制对象,通过接口给到前端,前端再生成dom string。

其中,在浏览器端也提供了BLOB相关的API,通过new Blog(…)生成blog对象。

前端获取这个blob对象后,的操作如下;

jq写法:

    let xhr = new XMLHttpRequest()
    xhr.open('GET', 'http://localhost:3001/video', true)
    xhr.responseType = 'blob'
    xhr.onload = function(e) {
      if (this.status === 200) {
        // 获取blob对象
        let blob = this.response
        console.log(blob)
        // 获取blob对象地址,并把值赋给容器
        $("#my-video").attr("src", URL.createObjectURL(blob));
      }
    }
    xhr.send()

js原生写法:

 <script type="text/javascript">
  var video = document.getElementById("my-video");  
  window.URL = window.URL || window.webkitURL;  
  var xhr = new XMLHttpRequest();  
  var play_url = 'test.mp4';
  xhr.open("GET", play_url, true);
  xhr.responseType = "blob";
  xhr.onload = function() {  
  	if (this.status == 200) {  
  		var blob = this.response;  console.log(blob);
  		video.onload = function(e) {  
  			window.URL.revokeObjectURL(video.src);
  		};
    	video.src = window.URL.createObjectURL(blob);
    }
  }
  xhr.send(); 
</script>

4,视频切片加密:

如果是加载一个大视频的话,这就会浪费大量的流量,并且加载过程会持续占用带宽。

这个时候我们会用到视频分片处理。

试想一下,如果我们把视频切成一段一段的,每次只加载一段,看完了再加载一段,这样能有效的节省资源。

还是以B站的一个视频为例,在F12中的Network里可以看到,网站一直在一段一段的请求视频流的数据。(PS:这个m4s是HTML的一种格式)

切片加密原理:将视频从MP4文件切片成多个ts文件,并使用AES-128对每一片视频进行加密,最后生成m3u8文件。这里我们需要用到ffmpeg。

防止video视频被下载的几种处理办法,前端,javascript,音视频文章来源地址https://www.toymoban.com/news/detail-577152.html

到了这里,关于防止video视频被下载的几种处理办法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 前端常用的上传下载文件的几种方式,直接上传、下载文件,读取.xlsx文件数据,导出.xlsx数据

    1.1根据文件流Blob进行下载 1.2根据下载文件链接直接进行下载 html

    2024年02月12日
    浏览(46)
  • 前端npm, yarn, pnpm下载速度太慢,设置国内镜像源的几种方式,让其速度飞起来

     一、说明 在前端开发的时候使用国外的镜像源速度很慢并且容易下载失败,有时候需要尝试多次才有可能下载成功,很麻烦,因此可以切换为国内镜像源,下面为常用的npm,yarn,pnpm切换国内镜像源(以淘宝为例)的方式。  二、NPM切换镜像源 1. 查看当前的镜像源。 ``` npm c

    2024年02月10日
    浏览(68)
  • 在Java中使用XxlCrawler时防止被反爬的几种方式

    目录 前言 一、常见的反爬措施 1、User-Agent识别 2、Referer识别 3、频率限制 4、IP限制 二、XxlCrawer的应对之道 1、User-Agent应对 2、频率限制 3、IP限制 三、XxlCrawler执行解析 1、XxlCrawler对象 2、启动对象 3、信息爬取线程 总结         众所周知,在抓取别人的信息,会面临一些

    2024年04月29日
    浏览(36)
  • vue解决跨域的几种办法

    当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时,那说明跨域了。 跨域是因为浏览器的同源策略所导致,同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能,同源是指:域名、协议、端口相同 解决跨域常用方法: 一、VUE中常用proxy来解决跨

    2024年02月15日
    浏览(53)
  • C++中防止头文件重复包含处理办法

    首先给出可以拷贝的模板: 在小型项目中,如果将函数的定义写在 main 函数的后面,那么需要在 main 函数前面加上这个函数的声明才可以顺利运行成功。 当然如果你不想写函数声明也可以,将函数的定义放在 main 函数前面即可。 但是在大项目中一般不会这么写,那得多少个

    2024年02月08日
    浏览(37)
  • npm 下载的几种方式

    1.npm install moduleName 模块将会被安装到node_modules 目录下 不会把模块依赖写入devDependencies 或 dependencies 节点 运行npm i 初始化项目时不会自动下载 2.npm install --save moduleName 模块将会被安装到node_modules 目录下 会将模块依赖写入 dependencies 节点 运行npm i 初始化项目时会自动下载 运行

    2024年02月08日
    浏览(48)
  • 解决办法:IDEA 控制台中文乱码的几种解决方案

    如果没有进行适当的配置,IntelliJ IDEA 可能会导致控制台和配置文件中出现中文乱码等问题,这会严重干扰编码过程以及问题追踪。本文汇总了解决 IDEA 中常见中文乱码问题的方法,本文的解决办法为大家提供帮助。 在IDEA 控制台输出中文的时候,出现乱码,现象如下: 2.1

    2024年02月04日
    浏览(60)
  • python下载包的几种方法

    有时候下载包总是报错,各种各样的错误。参考了很多很多,最终想记下一些。按照从易到繁的顺序。 最方便的就是通过pycharm编译器,点击加号搜索包。 然后是用anaconda prompt使用命令 pip install [-i 镜像网址] 包名,方括号可有可无,看下载速度或者是否报错。 接着就是跑到

    2024年02月15日
    浏览(46)
  • Keil下载-Keil历史版本的几种下载方法

    本文描述以下几种下载 Keil 历史版本的方法: 适用于 Keil 四大软件(MDK、 C51、 C166、 C251)。 官网正规步骤下载 Keil 官网提供有 Keil 历史版本下载的地址。 1.Keil MDK官网历史版本地址 https://link.zhihu.com/?target=https%3A//www.keil.com/update/rvmdk.asp 2.Keil C51官网历史版本地址 https://www.k

    2024年02月07日
    浏览(44)
  • 前端 mock 数据的几种方式

    目录 接口demo Better-mock just mock koa webpack Charles 总结         具体需求开发前,后端往往只提供接口文档,对于前端,最简单的方式就是把想要的数据写死在代码里进行开发,但这样的坏处就是和后端联调前还需要再把写死的数据从代码里删除,最好的方式是无侵入的  m

    2024年02月17日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包