视频网页前端禁止截屏代码实现js

news2024/12/30 1:04:09

有言在先

原理是采用商业级DRM实现,DRM 许可证费用目前没有免费服务商,腾讯云价格是0.0056元/次。

另外此功能不兼容安卓,安卓系统无法正常播放视频!

先展示效果

可以看到截屏时刻出现黑屏,录屏也能保证全黑状态。

DRM介绍

商业级DRM能够实现媒体内容加密保护、防抓包和破解工具破解、防浏览器插件破解、防浏览器插件截录屏。

类似于M3U8,它也是提供一个索引文件,之后根据索引文件去找每一个小节视频,播放器自动连贯播放每一小节,看起来是完整的一个视频,所以在一定程度上能够防止抓包。

数字版权管理(英语:Digital rights management,缩写为DRM)是一系列访问控制技术,通常用于控制数字内容和设备在被销售之后的使用过程。

DRM有时也称为拷贝保护、复制控制、技术保护措施等,但这些称呼存在争议。许多数字出版社和软件厂商都使用了DRM,例如亚马逊、AT&T、AOL、Apple Inc.、Netflix、Google、BBC、微软、Sony、Valve Corporation(以及其旗下的Steam)等。

商业级DRM目前常见的解决方案有两种,分别是 FairPlay(苹果系平台) 和 Widevine(谷歌系平台)。其中,Widevine 支持 L1 和 L3 两种级别,L1 级别的解密需要专门的硬件 TEE 环境,对播放端的要求更高。如果设备本身不支持 L1,则会自动尝试以 L3 级别播放。

因为我们是出售一个使用教学,本身必须使用电脑操作,兼容苹果系统已经意义不大。所以我们文章以Widevine为例,苹果的FairPlay只需要修改选项,其他内容完全一致。

腾讯云操作

在腾讯云搜索云点播服务,开通后付费(量大可以买资源包划算点)

视频上传可以掉接口也可以手动上传,这里直接参考官方文档吧

之后选择转码,依旧是支持调用,我们这里手动转换下:

 在选项里面带Widevine就是谷歌内核浏览器才能播放,其他苹果手机和安卓手机浏览器全无法播放的。FairPlay就是苹果才能播放的。我们这里选Widevine

攒代码实现网页播放器

转换好之后我们开始攒播放器代码,这段代码放在播放页面最前面。

腾讯云播放使用的是一个类似于token的临时令牌,支持限制一个令牌最多多少IP播放,我们为了更加安全让每次浏览都新生成一个令牌,一个令牌只能播放一次

虽然是Java程序员,还是会写点PHP的,虽然写的不太优雅...

注意https网站必须设置Scheme为HTTPS,http必须为http,否则无法播放

$head = '你自己的应用头秘钥.';
$time = time();
//链接5小时内有效
$maxTime = 18000;
$str = base64UrlEncode('{"appId":1315****,"fileId":"'.$video_id.'","currentTimeStamp":'.$time.',
"contentInfo":{"audioVideoType":"ProtectedAdaptive","drmAdaptiveInfo":{"widevineDefinition":13},
"imageSpriteDefinition":10},"expireTimeStamp":'.($time + 18000).',"urlAccessInfo":{"t":"'.dechex($time + 18000).'","rlimit":1,"us":"user1",
"domain":"1315****.vod2.myqcloud.com","scheme":"HTTPS"},"drmLicenseInfo":{"expireTimeStamp":'.($time + 18000).'}}');
$hash = signature($head.$str, '自己的播放秘钥');
$sign = $head.$str.'.'.$hash;

之后HTML代码:

<video id="player-container-id" height="600px" preload="auto">

在此页面添加如下JS,进行播放:

    var player = TCPlayer('player-container-id', {
        fileID: '<?php echo $video_id ?>',
        appID: '1315*****',
        psign:'<?php echo $sign?>',
        plugins:{
            DynamicWatermark: {
                type: 'text',
                speed: 0.5,
                content: '漂浮水印文本',
                opacity: 0.5,
                fontSize: '12px',
                color: '#bdbdbd',
            }
        }
    });

上面的漂浮水印文本一般是用户名或者本次播放的uuid,大家可以自己设置

特殊浏览器处理

虽然说是谷歌内核通用,实际上部分国内开发的不是特别好和开发的特别好的双核浏览器都存在问题。

360浏览器、火狐浏览器:用户能够正常录屏

双某浏览器、小某浏览器....等:无法播放

请提示用户使用谷歌浏览器或者Edge浏览器播放!我们接下来禁止用户使用360浏览器和火狐播放,避免视频被录屏。

禁止火狐浏览器

直接PHP通过UA判断,如果是火狐就标记一个变量,同时火狐的话不需要生成播放令牌

将上面PHP最后一行换成这个

$hash = signature($head.$str, '********');
if (!$isFireFox) {
    $sign = $head.$str.'.'.$hash;
} else {
    echo '火狐';
    $sign = '';
}

禁止360浏览器

360浏览器UA无法区分,只能使用JS代码,所以我们采用,如果是360就隐藏播放窗口,并且生成个假的窗口,看起来无法播放,引导更换浏览器。

    <script>
        function checkIeForNum() {
            return ((navigator.msPointerEnabled == undefined ? true : navigator.msPointerEnabled)
                && (navigator.msDoNotTrack == 1 || window.doNotTrack == 1)
                && ((Number(window.screenX) ? (window.screenLeft - window.screenX != 8) : false)
                    || ((navigator.userAgent.indexOf('MSIE 7.0') != -1 || navigator.userAgent.indexOf('MSIE 8.0') != -1) && console.count == undefined)));
        }
        function checkChromeForNum() {
            var uas = navigator.userAgent.split(' '),
                result = false;
            if (uas[uas.length - 1].indexOf('Safari') == -1) {
                return result;
            }
            for (var key in navigator.plugins) {
                if (navigator.plugins[key].filename == 'np-mswmp.dll') {
                    return !result;
                }
            }
            return result;
        }
        $(document).ready(function () {
            if (navigator.userAgent.indexOf('Safari') != -1) {
                if (checkChromeForNum()) {
                    $(".ke-player").html("")
                    $(".down-tip").css("display", "block")
                }
            } else {
                if(checkIeForNum()) {
                    $(".ke-player").html("")
                    $(".down-tip").css("display", "block")
                }
            }
        })
    </script>

如果是是360或者火狐就会显示 down-tip 其他浏览器会显示 ke-player 

<div class="down-tip" <?php if ($isFireFox) echo 'style="display:block"';?>>
 <p>您的浏览器不支持DRM视频解密组件!</p>
 <p>请下载 <a href="https://www.google.com/intl/zh-CN/chrome/" target="_blank">Google Chrome浏览器</a> 或 <a href="https://www.microsoft.com/zh-cn/edge?form=MA13FJ" target="_blank">Microsoft Edge浏览器</a> 观看视频吧~</p>
</div>
<div class="ke-player" <?php if ($isFireFox) echo 'style="display:none"';?>>
 <video id="player-container-id" height="600px" preload="auto">
 </video>
</div>

撒花

这样就实现了前端禁止视频截屏的功能。

苹果电脑的谷歌浏览器也能够正常播放哦!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/652278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

独立站的Facebook运营策略探索

Facebook广告是独立站吸引流量和推广业务的重要工具。然而&#xff0c;如何有效地运用Facebook广告&#xff0c;提高曝光率、点击率和转化率&#xff0c;是每个独立站主的关注焦点。本文将探索独立站如何巧妙地运用Facebook广告&#xff0c;实现精准引流和业务增长。 第一&…

性能优化-内存优化

8-《内存优化》 一.基础知识1.Java的内存分配区域2.Java的引用类型3.Java的垃圾回收机制&#xff1a;三个问题4.Android的内存管理机制 二. Android的内存泄漏、内存溢出、内存抖动概念1.**内存泄露**2.**内存抖动**3.常见的内存泄漏现象 三. 工具1.Profiler2.MAT3. Leak Canar…

高效工作了

高效工作 目录概述需求&#xff1a; 设计思路实现思路分析1.安排计划 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;skip hardness,make a better result,wait for change,challenge Survive.…

STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4

STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 Proteus仿真小实验&#xff1a; STC15WProteus仿真HX711电子秤串口计价称重4x4键盘STC15W4K32S4 功能&#xff1a; 硬件组成&#xff1a;STC15W4K32S4单片机 LCD12864显示器4x4矩阵键盘HX711电子秤 1.单片机通…

人工智能领域:面试常见问题超全(深度学习基础、卷积模型、对抗神经网络、预训练模型、计算机视觉、自然语言处理、推荐系统、模型压缩、强化学习、元学习)

【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化算法、卷积模型、序列模型、预训练模型、对抗神经网络等 专栏详细介绍&#xff1a;【深度学习入门到进阶】必看系列&#xff0c;含激活函数、优化策略、损失函数、模型调优、归一化…

QTYX量化系统实战案例分享|以小搏大选股策略一天三涨停-202306第四弹

前言 “实战案例分享系列”是和大家分享一些股票量化分析工具QTYX在实战中的应用案例&#xff08;包括失败的案例&#xff09;&#xff0c;这样能够帮助大家更好地去理解QTYX中的功能设计&#xff0c;也能更好地帮助大家搭建出属于自己的量化交易系统。 关于QTYX的使用攻略可以…

想成为“专精特新”企业?可以从这4个方面入手...

一直以来我国高度重视培育壮大中小企业&#xff0c;“专精特新企业”是近年来政府各层面都在大力扶持的重点企业类型。大批中小企业积极将“数字化”“智能化”融入生产、管理、营销、供应链协作等各个方面&#xff0c;运用新技术、新手段&#xff0c;有效提高运营效率&#xf…

Shader Graph21-UV投影cubemap

准备 https://download.csdn.net/download/zhuziying99/87900710 需要先生成dds文件&#xff0c;可以使用两个工具如果是N卡的显卡&#xff0c;可以使用 Texture Tools Exporter | NVIDIA Developer 如果是A卡的显卡&#xff0c;可以使用CubeMapGen 一、打开Unreal&#x…

Vue中如何进行数据可视化大屏展示

Vue中如何进行数据可视化大屏展示 在现代数据驱动的应用程序中&#xff0c;数据可视化大屏已经成为了非常重要的一环。通过对海量数据进行可视化展示&#xff0c;可以帮助用户更好地理解和分析数据&#xff0c;从而做出更加明智的决策。在Vue中进行数据可视化大屏展示也变得越…

SpringBoot+Vue+Java 的高校招生管理系统

文章目录 源码下载地址简介系统设计思路1 数据库设计2 系统整体设计2.1 系统设计思想2.2系统流程图 系统详细设计1系统功能模块2. 管理员功能模块3学生功能模块 源码下载地址 源码下载地址 源码下载地址https://download.csdn.net/download/JasonXu94/87870946 简介 本次设计…

开源游戏区块链项目分享:Unity开发的独立区块链

Arouse Blockchain [Unity独立区块链] ❗️千万别被误导&#xff0c;上图内容虽然都在项目中可寻&#xff0c;但与目前区块链的业务代码关联不大&#xff0c;仅供宣传作用(总得放些图看着好看)。之所以有以上内容是项目有个目标功能是希望每个用户在区块链上都有一个独一无二的…

Unity3D:Scene 视图摄像机

推荐&#xff1a;将 NSDT场景编辑器 加入你的3D工具链 3D工具集&#xff1a; NSDT简石数字孪生 Scene 视图摄像机 摄像机设置菜单包含用于配置 Scene 视图摄像机的选项。这些调整不会影响带有摄像机组件的游戏对象上的设置。 要访问摄像机设置菜单&#xff0c;请单击 Scene 视…

安装MYSQL环境(window/linux环境)(SQL 小虚竹)

回城传送–》《100天精通MYSQL从入门到就业》 文章目录 一、windows安装mysql下载只安装mysql server客户端连接测试 二、linux安装mysql安装前的准备关闭CentOS 防火墙关闭SELinux为什么要关闭SELinux 创建MySQL用户和组 下载安装mysql解压mysql安装包配置环境创建数据目录新…

Axure RP 9 基础教程 元件基础1

第一章&#xff1a;Axure RP 9的元件(1) 1、元件的概念 首先我们来认识一下Axure RP 9元件&#xff0c;元件是组成我们原型的零件&#xff0c;也有人翻译成组件。Axure RP 9默认给我们提供了三套元件库&#xff0c;默认元件库、流程图元件库、图标元件库。可以根据自己的需要选…

Python进阶语法之断言

Python进阶语法之断言 在Python编程中&#xff0c;断言&#xff08;assertion&#xff09;是一种检查程序状态的有用工具&#xff0c;它可以帮助你找出程序中的错误。断言是在代码中设置的检查点&#xff0c;用于确保程序的某些条件必须为真&#xff0c;否则程序会引发一个错误…

代码随想录二刷day24 | 回溯算法 之 理论基础 77. 组合

day24 理论基础77. 组合递归函数的返回值以及参数回溯函数终止条件单层搜索的过程 理论基础 回溯法解决的问题都可以抽象为树形结构。 因为回溯法解决的都是在集合中递归查找子集&#xff0c;集合的大小就构成了树的宽度&#xff0c;递归的深度&#xff0c;都构成的树的深度。…

《JavaEE初阶》JVM基础知识

《JavaEE初阶》JVM基础知识 文章目录 《JavaEE初阶》JVM基础知识JVM内存区域划分堆:栈:方法区:程序计数器:划分细节: 类加载机制:双亲委派模型:垃圾回收机制(GC)什么样的内存需要GC来回收引用计数来判断对象是否是垃圾:使用可达性分析来判断对象是否为垃圾:垃圾回收策略:有缺陷…

Windows中安装和使用Kafka

&#x1f44f;作者简介&#xff1a;大家好&#xff0c;我是Rockey&#xff0c;不知名企业的不知名Java开发工程师 &#x1f525;如果感觉博主的文章还不错的话&#xff0c;请&#x1f44d;三连支持&#x1f44d;一下博主哦 &#x1f4dd;联系方式&#xff1a;he18339193956&…

【大学物理实验】凸透镜焦距测定

文章目录 选择题选择题 (多选题) 光路调整与薄透镜焦距测定中用到的主要实验元件包括: A. 光具座 B. 薄凸透镜 C. 光源 D. 带有平面镜的像屏 正确答案: ABCD (多选题)光路共轴调节是将那些光学元件的几何中心调至等高: A. 光具座 B. 透镜 C. 光源 D. 带有平面镜的像屏 正确…

Pixea 5:Mac电脑看图软件

Pixea 5是一款适用于 Mac 平台的图像浏览和管理软件。 下面是关于 Pixea Mac 看图软件的简要介绍&#xff1a; 图像浏览&#xff1a;Pixea 提供快速、流畅的图像浏览功能&#xff0c;支持常见的图像格式&#xff0c;如JPEG、PNG、BMP、GIF等。您可以通过缩略图、列表视图或全屏…