防止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日
    浏览(29)
  • 前端npm, yarn, pnpm下载速度太慢,设置国内镜像源的几种方式,让其速度飞起来

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

    2024年02月10日
    浏览(51)
  • 在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日
    浏览(28)
  • vue解决跨域的几种办法

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

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

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

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

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

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

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

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

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

    2024年02月15日
    浏览(36)
  • 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日
    浏览(34)
  • 前端生成分享海报的几种方法

    1,使用painter插件    适用于微信小程序及uniapp的小程序端 ①,引入插件painter    克隆地址:https://gitcode.net/mirrors/Kujiale-Mobile/Painter    下载的 painter 放到微信小程序的 components 目录下 ②在json文件中引入 \\\"usingComponents\\\": {         \\\"painter\\\":\\\"/components/painter/painter\\\" }, 注:在u

    2024年02月21日
    浏览(50)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包