课程视频怎么加密?在线教育机构常用的6个课程加密方法

知识付费时代,课程视频是教育机构的核心资产。但是不难发现,课程视频的安全却得不到保障。各大购物平台搜索课程名称,便出现了许多盗版课程。如何有效防止课程被翻录和二次传播,成为急需解决的关键问题。今天这期分享点干货,聊聊在线教育机构比较常用的6个保利威课程加密方法。

想要课程视频不被盗录,可以从加密课程视频本身加密传播通道两个方面入手。

加密课程视频本身,就是对课程视频本身进行技术加密。加密课程本身,可以使课程视频不容易被盗录或者盗录后直接能追踪盗录者,降低被盗录的风险。

1、VRM视频分片错序加密

VRM视频分片错序加密采用分布式编码技术,将视频文件进行物理切片,对碎片逐一进行混淆式加密,每片视频进行多种算法混合型加密,同时结合独立研制密码本,将关键数据进行错序混淆,对视频文件进行最高级别加密,这样经过加密的视频内容即使被下载,也无法进行恶意的二次分发,视频破解难度倍增。


<!doctype html>
<html lang="cn" data-bs-theme="light">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link href="assets/plugins/simplebar/css/simplebar.css" rel="stylesheet"><link href="assets/plugins/perfect-scrollbar/css/perfect-scrollbar.css" rel="stylesheet"><link href="assets/plugins/metismenu/css/metisMenu.min.css" rel="stylesheet"><link href="assets/css/pace.min.css" rel="stylesheet"><script src="assets/js/pace.min.js"></script><link href="assets/css/bootstrap.min.css" rel="stylesheet"><link href="assets/css/bootstrap-extended.css" rel="stylesheet"><link href="assets/sass/app.css" rel="stylesheet"><link href="assets/css/icons.css" rel="stylesheet"><link rel="stylesheet" href="assets/sass/bordered-theme.css"><title>VRM视频分片错序加密</title><meta name="Keywords" content="VRM视频加密,视频加密,视频防下载,视频防盗录,视频防录屏" /><meta name="Description" content="VRM视频分片加密,采用分布式编码技术,将视频文件进行物理切片,对碎片逐一进行混淆式加密,包括AES128加密、XOR加密、关键帧错序,每片视频进行多种算法混合型加密" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-okaidia.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css" rel="stylesheet" />
</head><body><!--wrapper--><div class="wrapper"><!--sidebar/b--><div class="sidebar-wrapper" data-simplebar="true"><div class="sidebar-header"><div><img src="assets/images/logo-icon.png" class="logo-icon" alt="logo icon"></div><div><h4 class="logo-text">H5Player</h4></div><div class="mobile-toggle-icon ms-auto"><i class='bx bx-x'></i></div></div><!--nav/b--><ul class="metismenu" id="menu"><li><a href="javascript:;" class="has-arrow"><div class="parent-icon"><i class="bx bx-category"></i></div><div class="menu-title">教育场景视频应用</div></a><ul>						<li class="none"> <a href="index.php"><i class='bx bx-radio-circle'></i>H5多终端调用范例</a></li><li class="mm-active"> <a href="vrm.php"><i class='bx bx-radio-circle'></i>VRM分片错序加密</a></li><li class="none"> <a href="userid.php"><i class='bx bx-radio-circle'></i>用户ID跑马灯 </a></li><li class="none"> <a href="random-watermark.php"><i class='bx bx-radio-circle'></i>数字化动态ID随机水印</a></li><li class="none"> <a href="ai-invisible-watermark.php"><i class='bx bx-radio-circle'></i>AI隐形溯源水印</a></li><li class="none"> <a href="no-screen-recording.php"><i class='bx bx-radio-circle'></i>浏览器防录屏</a></li><li class="none"> <a href="OVP.php"><i class='bx bx-radio-circle'></i>OVP视频防盗链</a></li><li class="none"> <a href="ats-https.php"><i class='bx bx-radio-circle'></i>ATS/HTTPS数据防篡改</a></li><li class="none"> <a href="watermark.php"><i class='bx bx-radio-circle'></i>视频水印/企业图标</a></li><li class="none"> <a href="no-seeking.php"><i class='bx bx-radio-circle'></i>禁止拖动视频进度条</a></li><li class="none"> <a href="multilingual-subtitles.php"><i class='bx bx-radio-circle'></i>智能字幕/自动生成字幕</a></li><li class="none"> <a href="continue-playing.php"><i class='bx bx-radio-circle'></i>视频自动续播</a></li><li class="none"> <a href="trial.php"><i class='bx bx-radio-circle'></i>片段试看/试听购买</a></li><!--li> <a href="collector.php"><i class='bx bx-radio-circle'></i>视频信息收集器</a></li--><li> <a href="qa-player.php"><i class='bx bx-radio-circle'></i>问答播放器/视频弹题</a></li><li> <a href="speed.php"><i class='bx bx-radio-circle'></i>倍速播放/多倍速观看</a></li><li> <a href="quality.php"><i class='bx bx-radio-circle'></i>多清晰度切换/画质切换</a></li><li> <a href="knowledge-list.php"><i class='bx bx-radio-circle'></i>知识清单/知识点提示</a></li><li> <a href="data-analysis.php"><i class='bx bx-radio-circle'></i>数据分析/数据司南</a></li><li> <a href="cn-en-player.php"><i class='bx bx-radio-circle'></i>中英文播放器</a></li><li> <a href="ai-course.php"><i class='bx bx-radio-circle'></i>AI智能制课</a></li><li> <a href="ai-outline.php"><i class='bx bx-radio-circle'></i>视频点播AI大纲</a></li><li> <a href="picture-in-picture.php"><i class='bx bx-radio-circle'></i>视频画中画(PC端)</a></li><li> <a href="heat-map.php"><i class='bx bx-radio-circle'></i>播放器观看热力图</a></li></ul></li><li><a href="faq.php"><div class="parent-icon"><i class="bx bx-help-circle"></i></div><div class="menu-title">FAQ</div></a></li></ul>			<!--nav/e--></div><!--sidebar/e --><!--header/b --><header><div class="topbar"><nav class="navbar navbar-expand gap-2 align-items-center"><div class="mobile-toggle-menu d-flex"><i class='bx bx-menu'></i></div><div class="top-menu ms-auto"><ul class="navbar-nav align-items-center gap-1"><li class="nav-item dark-mode d-none d-sm-flex"></li></ul></div><div class="user-box dropdown px-3"><a class="d-flex align-items-center nav-link " href="userlogin.php" role="button" ><img src="assets/images/mypic_no.jpg" class="user-img" alt="userpic"><div class="user-info"><p class="user-name mb-0">USER</p><p class="designattion mb-0">LOGIN</p></div></a><ul class="dropdown-menu dropdown-menu-end"><li><a class="dropdown-item d-flex align-items-center" href="userlogin.php"><i class="bx bx-user fs-5"></i><span>用户登录</span></a></li></ul></div></nav></div></header>		<!--header/e --><!--mainpage/b --><div class="page-wrapper"><div class="page-content"><!--breadcrumb--><div class="page-breadcrumb d-none d-sm-flex align-items-center mb-3"><div class="breadcrumb-title pe-3">Edu H5Player</div><div class="ps-3"><nav aria-label="breadcrumb"><ol class="breadcrumb mb-0 p-0"><li class="breadcrumb-item"><a href="javascript:;"><i class="bx bx-home-alt"></i></a></li><li class="breadcrumb-item active" aria-current="page">Demo</li></ol></nav></div></div><!--end breadcrumb--><div class="row"><div class="col-12 col-lg-9 mx-auto"><div class="text-center"><div id="player"></div></div><div class="text-center"><hr /><h5 class="mb-0">VRM视频分片错序加密(演示实例)</h5><hr /></div></div><div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">VRM视频分片错序加密</h5><div class="lh-base mt-2">采用分布式编码技术,将视频文件进行物理切片,对碎片逐一进行混淆式加密,包括AES128加密、XOR加密、关键帧错序,每片视频进行多种算法混合型加密, 同时结合独立研制密码本,将关键数据进行错序混淆,对视频文件进行最高级别加密,这样经过加密的视频内容即使被下载,也无法进行恶意的二次分发,视频破解难度倍增。</div><hr /><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">VRM13视频加密</h5><div class="lh-base mt-2"><span class="fw-bold">VRM13</span>:VRM(视频版权保护方案)解决方案也已经发展到了13.0的版本,新版本的VRM修复了很多安全漏洞,包含了Web端HTML5播放器和原生的iOS、Android C++ SDK的安全性重大提升以及对视频加密转码采用了保利威自有专利的加密算法,能够最大限度保证视频文件的安全。VRM13为私有加密的2.0版本,使用自研私有编码,只有在保利威的专有播放器上才能播放。<br><span class="fw-bold">VRM13播放器</span>:指支持VRM13播放的播放器,VRM13播放器也兼容非VRM13授权的视频播放,只是播放的形式不同,比如VRM9的视频,会兼容使用浏览器的video播放器进行播放。</div></div></div><div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><hr /><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">代码调用示例</h5><pre  class="line-numbers"><code class="language-html">&lt;div id=&quot;player&quot;&gt;&lt;/div&gt;&lt;script src=&quot;//player.polyv.net/resp/vod-player/latest/player.js&quot;&gt;&lt;/script&gt;&lt;script&gt;var player = polyvPlayer({wrap: '#player',width: 800,height: 533,vid: '88083abbf5bcf1356e05d39666be527a_8', playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx', //playsafeUrl:'https://myDomain.com/token', // 业务方自定义的获取播放凭证接口URL,与playsafe参数二选一ts:'1568131545000',sign:'88313661ba7ded642c7b557b0a364b4b'});//切换加密视频时,需要重新获取播放凭证。如果初始化播放器时使用了playsafeUrl参数,则播放器会自动获取新的凭证,无需传playsafe参数。player.changeVid({vid: '88083abbf5bcf1356e05d39666be527a_9', //需要切换的视频vidplaysafe: '81814fed-bdd0-4506-bec1-ebc8093148c6-hfevwsfxcsbcocx', //新获取的playsafe tokensign: '88313661ba7ded642c7b557b0a364b4c', //新获取的sign和ts参数ts: '1568131545001'});
&lt;/script&gt;</code></pre></div></div><div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><hr /><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">浏览器支持情况:</h5><p class="lh-base mt-2">由于私有加密对浏览器版本有一定要求,web端在各端系统浏览器支持情况具体如下:</p><div class="card"><div class="card-body"><table class="table mb-0 table-striped"><thead><tr><th >浏览器</th><th >版本</th><th >浏览器</th><th >版本</th></tr></thead><tbody><tr><td >Chorme</td><td >57以上</td><td class="border-left">Chrome for Android</td><td >111以上</td></tr><tr><td >Edge</td><td >16以上</td><td >Safari</td><td >11以上</td></tr><tr><td >Firefox</td><td >52以上</td><td >Firefox for Android</td><td >111以上</td></tr><tr><td >Samsung Internet</td><td >7.2以上</td><td >Opera</td><td >44以上</td></tr><tr><td >Opera Mobile</td><td >73以上</td><td >Opera mini</td><td >均不支持</td></tr><tr><td >IE</td><td >均不支持</td><td >UC for Android</td><td >13.4以上</td></tr><tr><td >Android Browser</td><td >111以上</td><td >QQBrowser</td><td >13.1以上</td></tr><tr><td >Baidu Browser</td><td >13.18以上</td><td >KaiOS Browser</td><td >3.1以上</td></tr></tbody></table></div></div></div> </div></div><!--end row--></div></div><!--mainpage/e--><!--overlay/b--><div class="overlay toggle-icon"></div><!--overlay/e---><!--BackToTop/b--> <a href="javaScript:;" class="back-to-top"><iclass='bx bxs-up-arrow-alt'></i></a><!--BackToTop/e--><footer class="page-footer"><p class="mb-0">教育培训场景视频加密与视频应用演示(DEMO)</p></footer>	</div><!--wrapper/e--><!--js/b--><script src="assets/js/bootstrap.bundle.min.js"></script><script src="assets/js/jquery.min.js"></script><script src="assets/plugins/simplebar/js/simplebar.min.js"></script><script src="assets/plugins/metismenu/js/metisMenu.min.js"></script><script src="assets/plugins/perfect-scrollbar/js/perfect-scrollbar.js"></script><script src="assets/js/app.js"></script><!--script src="//player.polyv.net/resp/vod-player/latest/player.js"></script--><script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script><script src='//player.polyv.net/resp/vod-player-drm/canary/player.js'></script><script>var pdiv = document.getElementById("player");var w = pdiv.offsetWidth;    // 返回元素的总宽度var h = pdiv.offsetWidth*0.5625;    // 返回元素的总高度var player = polyvPlayer({wrap: '#player',width: '100%',height: h, df: 3, autoplay: 'true',vid: 'ef03a1d2e50f96cc4a59b5a49bacf814_e',playsafe:'57434946-d761-4855-9432-af0ce3b6600d-vUIDaTONYa2028', ts:'1756432975000',sign:'0cbd85dc432a435feeb4ac3ebaf927de'});</script><!--js/e-->
</body>
</html>

2、AI隐形溯源水印

AI隐形溯源水印是一项结合人工智能与数字水印技术的版权保护方案。通过在视频中嵌入人眼不可见的保利威隐形水印,实现防盗录盗播、全链路版权保护和实时溯源功能。嵌入隐形水印,不影响观看体验,但能有效追踪盗录行为。

3、用户ID跑马灯

用户ID跑马灯是指,通过接口配置获取观看者信息,将观看者信息随机显示于视频播放界面。用户ID跑马灯可快速追踪被盗视频出处,方便第一时间对录屏者进行举报封号,并为法律途径起诉保留证据。在震慑盗版者的同时,也这样可以大大的增加盗版者的录屏成本,同时还能够强力的震慑盗版者。

服务端实现的PHP示例


<!doctype html>
<html lang="cn" data-bs-theme="light">
<head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link href="assets/plugins/simplebar/css/simplebar.css" rel="stylesheet"><link href="assets/plugins/perfect-scrollbar/css/perfect-scrollbar.css" rel="stylesheet"><link href="assets/plugins/metismenu/css/metisMenu.min.css" rel="stylesheet"><link href="assets/css/pace.min.css" rel="stylesheet"><script src="assets/js/pace.min.js"></script><link href="assets/css/bootstrap.min.css" rel="stylesheet"><link href="assets/css/bootstrap-extended.css" rel="stylesheet"><link href="assets/sass/app.css" rel="stylesheet"><link href="assets/css/icons.css" rel="stylesheet"><link rel="stylesheet" href="assets/sass/bordered-theme.css"><title>用户ID跑马灯防录屏</title><meta name="Keywords" content="跑马灯防录屏,视频加密,ID跑马灯防录屏,视频防盗录,视频防录屏" /><meta name="Description" content="用户ID跑马灯功能通过接口配置获取观看者信息,将观看者信息随机显示于视频播放界面(可自定义位置、时间、时长及颜色等),在不影响观看体验的同时,让视频具备指纹信息。" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/themes/prism-okaidia.min.css" rel="stylesheet" />
<link href="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.css" rel="stylesheet" />
</head><body><!--wrapper--><div class="wrapper"><!--sidebar/b--><div class="sidebar-wrapper" data-simplebar="true"><div class="sidebar-header"><div><img src="assets/images/logo-icon.png" class="logo-icon" alt="logo icon"></div><div><h4 class="logo-text">H5Player</h4></div><div class="mobile-toggle-icon ms-auto"><i class='bx bx-x'></i></div></div><!--nav/b--><ul class="metismenu" id="menu"><li><a href="javascript:;" class="has-arrow"><div class="parent-icon"><i class="bx bx-category"></i></div><div class="menu-title">教育场景视频应用</div></a><ul>						<li class="none"> <a href="index.php"><i class='bx bx-radio-circle'></i>H5多终端调用范例</a></li><li class="none"> <a href="vrm.php"><i class='bx bx-radio-circle'></i>VRM分片错序加密</a></li><li class="mm-active"> <a href="userid.php"><i class='bx bx-radio-circle'></i>用户ID跑马灯 </a></li><li class="none"> <a href="random-watermark.php"><i class='bx bx-radio-circle'></i>数字化动态ID随机水印</a></li><li class="none"> <a href="ai-invisible-watermark.php"><i class='bx bx-radio-circle'></i>AI隐形溯源水印</a></li><li class="none"> <a href="no-screen-recording.php"><i class='bx bx-radio-circle'></i>浏览器防录屏</a></li><li class="none"> <a href="OVP.php"><i class='bx bx-radio-circle'></i>OVP视频防盗链</a></li><li class="none"> <a href="ats-https.php"><i class='bx bx-radio-circle'></i>ATS/HTTPS数据防篡改</a></li><li class="none"> <a href="watermark.php"><i class='bx bx-radio-circle'></i>视频水印/企业图标</a></li><li class="none"> <a href="no-seeking.php"><i class='bx bx-radio-circle'></i>禁止拖动视频进度条</a></li><li class="none"> <a href="multilingual-subtitles.php"><i class='bx bx-radio-circle'></i>智能字幕/自动生成字幕</a></li><li class="none"> <a href="continue-playing.php"><i class='bx bx-radio-circle'></i>视频自动续播</a></li><li class="none"> <a href="trial.php"><i class='bx bx-radio-circle'></i>片段试看/试听购买</a></li><!--li> <a href="collector.php"><i class='bx bx-radio-circle'></i>视频信息收集器</a></li--><li> <a href="qa-player.php"><i class='bx bx-radio-circle'></i>问答播放器/视频弹题</a></li><li> <a href="speed.php"><i class='bx bx-radio-circle'></i>倍速播放/多倍速观看</a></li><li> <a href="quality.php"><i class='bx bx-radio-circle'></i>多清晰度切换/画质切换</a></li><li> <a href="knowledge-list.php"><i class='bx bx-radio-circle'></i>知识清单/知识点提示</a></li><li> <a href="data-analysis.php"><i class='bx bx-radio-circle'></i>数据分析/数据司南</a></li><li> <a href="cn-en-player.php"><i class='bx bx-radio-circle'></i>中英文播放器</a></li><li> <a href="ai-course.php"><i class='bx bx-radio-circle'></i>AI智能制课</a></li><li> <a href="ai-outline.php"><i class='bx bx-radio-circle'></i>视频点播AI大纲</a></li><li> <a href="picture-in-picture.php"><i class='bx bx-radio-circle'></i>视频画中画(PC端)</a></li><li> <a href="heat-map.php"><i class='bx bx-radio-circle'></i>播放器观看热力图</a></li></ul></li><li><a href="faq.php"><div class="parent-icon"><i class="bx bx-help-circle"></i></div><div class="menu-title">FAQ</div></a></li></ul>			<!--nav/e--></div><!--sidebar/e --><!--header/b --><header><div class="topbar"><nav class="navbar navbar-expand gap-2 align-items-center"><div class="mobile-toggle-menu d-flex"><i class='bx bx-menu'></i></div><div class="top-menu ms-auto"><ul class="navbar-nav align-items-center gap-1"><li class="nav-item dark-mode d-none d-sm-flex"></li></ul></div><div class="user-box dropdown px-3"><a class="d-flex align-items-center nav-link " href="userlogin.php" role="button" ><img src="assets/images/mypic_no.jpg" class="user-img" alt="userpic"><div class="user-info"><p class="user-name mb-0">USER</p><p class="designattion mb-0">LOGIN</p></div></a><ul class="dropdown-menu dropdown-menu-end"><li><a class="dropdown-item d-flex align-items-center" href="userlogin.php"><i class="bx bx-user fs-5"></i><span>用户登录</span></a></li></ul></div></nav></div></header>		<!--header/e --><!--mainpage/b --><div class="page-wrapper"><div class="page-content"><!--breadcrumb--><div class="page-breadcrumb d-none d-sm-flex align-items-center mb-3"><div class="breadcrumb-title pe-3">Edu H5Player</div><div class="ps-3"><nav aria-label="breadcrumb"><ol class="breadcrumb mb-0 p-0"><li class="breadcrumb-item"><a href="javascript:;"><i class="bx bx-home-alt"></i></a></li><li class="breadcrumb-item active" aria-current="page">Demo</li></ol></nav></div></div><!--end breadcrumb--><div class="row"><div class="col-12 col-lg-9 mx-auto"><div class="text-center"><div id="player"></div></div><div class="text-center"><hr /><h5 class="mb-0">用户ID跑马灯功能(演示实例/请点右上角登录后查看用户ID跑马灯效果)</h5><hr /></div></div><div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">用户ID跑马灯功能</h5><div class="lh-base mt-2">通过接口配置获取观看者信息,将观看者信息随机显示于视频播放界面(可自定义位置、时间、时长及颜色等),在不影响观看体验的同时,让视频具备指纹信息。</div><hr /><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">用户ID跑马灯作用</h5><div class="lh-base mt-2">ID跑马灯可快速追踪被盗视频出处,方便第一时间对录屏者进行举报封号,并为法律途径起诉保留证据。在震慑盗版者的同时,也这样可以大大的增加盗版者的录屏成本,同时还能够强力的震慑盗版者。</div><hr /></div></div> <div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">服务端实现的PHP示例</h5><div id="myContainer" style="position: relative; background-color: #f9f9f9; padding: 10px;height:300px;overflow: hidden;padding:0;margin:0;"><pre  class="line-numbers" ><code class="language-html">&lt;?php
//服务端实现的PHP示例如下
//validate.php
$username = "elvis"; // 用户昵称, 若值为中文需要urlencode('张三'),可从session获取
$secretkey = "secretkey"; // 登录保利威管理后台,点击 【设置】 → 【API接口】获取
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];
$fontSize="40";
$fontColor="0xFFE900";
$speed="200";
$filter="on";
$setting="3";
$alpha="1";
$filterAlpha="1";
$filterColor="0x3914AF";
$blurX="2";
$blurY="2";
$tweenTime="1";
$interval="5";
$lifeTime="3";
$strength="4";
$show="on";
$msg="Errormessage!";if($username=="elvis"){ // 业务方可自定义授权验证逻辑$status = 1;
}else {$status = 2;
}if(!empty($_GET["callback"])){$callback = $_GET["callback"];
}else{$callback = '';
}$sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t&msg=$msg&fontSize=$fontSize&fontColor=$fontColor&speed=$speed&filter=$filter&setting=$setting&alpha=$alpha&filterAlpha=$filterAlpha&filterColor=$filterColor&blurX=$blurX&blurY=$blurY&interval=$interval&lifeTime=$lifeTime&tweenTime=$tweenTime&strength=$strength&show=$show");
$array = Array("status"=>$status,"username"=>$username,"sign"=>$sign,"msg"=>$msg,"fontSize"=>$fontSize,"fontColor"=>$fontColor,"speed"=>$speed,"filter"=>$filter,"setting"=>$setting,"alpha"=>$alpha,"filterAlpha"=>$filterAlpha,"filterColor"=>$filterColor,"blurX"=>$blurX,"blurY"=>$blurY,"tweenTime"=>$tweenTime,"interval"=>$interval,"lifeTime"=>$lifeTime,"strength"=>$strength,"show"=>$show,);
$Json = json_encode($array);if($callback!=''){echo $callback."(".$Json.")";
} else{echo $Json;
}
?></code></pre>
</div> <h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">Sign的计算规则为(参数必须按照示例中的顺序拼接)</h5><pre  class="line-numbers"><code class="language-html">&lt;?php
//Sign的计算规则
Plain = "vid=" + vid + "&secretkey=" + secretKey + "&username=" + username + "&code=" + code + "&status=" + status + "&t=" + t +
"&msg=" + msg + "&fontSize=" + fontSize + "&fontColor=" + fontColor + "&speed=" + speed +"&filter=" +filter + "&setting=" + setting +
"&alpha=" + alpha + "&filterAlpha=" + filterAlpha  + "&filterColor=" + filterColor + "&blurX=" + blurX + "&blurY=" + blurY +
"&interval=" + interval + "&lifeTime=" + lifeTime + "&tweenTime=" + tweenTime + "&strength=" + strength + "&show=" +show;
sign = MD5.hash(Plain);
?></code></pre></div> </div><div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><hr /><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">接口返回参数说明</h5><p class="lh-base mt-2">由于私有加密对浏览器版本有一定要求,web端在各端系统浏览器支持情况具体如下:</p><div class="card"><div class="card-body"><table class="table mb-0 table-striped"><thead><tr><th>参数名</th><th>类型</th><th>必填</th><th>默认值</th><th>说明</th></tr></thead><tbody><tr><td>status</td><td>Integer</td><td>是</td><td>/</td><td>是否允许播放:1 允许 2 禁止</td></tr><tr><td>username</td><td>String</td><td>是</td><td>/</td><td>观众名称,也会用于跑马灯显示的文字内容</td></tr><tr><td>sign</td><td>String</td><td>是</td><td>/</td><td>接口签名,用于校验返回内容是否被篡改</td></tr><tr><td>show</td><td>String</td><td>是</td><td>off</td><td>当参数值为&ldquo;on&rdquo;时表示显示跑马灯,默认不显示</td></tr><tr><td>setting</td><td>Integer</td><td>是</td><td>1</td><td>跑马灯滚动的样式:1 从右到左滚动 2 随机位置闪烁 3 从右到左闪烁滚动</td></tr><tr><td>speed</td><td>Integer</td><td>是</td><td>200</td><td>跑马灯文字从右侧移至左侧所需时间,单位:1/10秒,仅对setting(1、3)生效</td></tr><tr><td>lifeTime</td><td>Integer</td><td>是</td><td>3</td><td>跑马灯文字显示时间,单位:秒,仅对setting(2)生效</td></tr><tr><td>interval</td><td>Integer</td><td>是</td><td>5</td><td>跑马灯文字隐藏间隔时间,单位:秒, 仅对setting(2、3)生效,</td></tr><tr><td>tweenTime</td><td>Integer</td><td>是</td><td>1</td><td>跑马灯文字渐隐渐现时间,单位:秒 (已废弃)</td></tr><tr><td>fontSize</td><td>Integer</td><td>是</td><td>30</td><td>跑马灯文字的字体大小</td></tr><tr><td>fontColor</td><td>String</td><td>是</td><td>0x000000</td><td>跑马灯文字颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色</td></tr><tr><td>alpha</td><td>Float</td><td>是</td><td>1</td><td>跑马灯文字透明度,取值范围0.01~1,参数值不能小于0.01</td></tr><tr><td>filter</td><td>String</td><td>是</td><td>off</td><td>跑马灯文字是否描边,on 描边 off 不描边</td></tr><tr><td>filterAlpha</td><td>Float</td><td>是</td><td>1</td><td>文字描边透明度,取值范围0~1</td></tr><tr><td>filterColor</td><td>String</td><td>是</td><td>0x000000</td><td>文字描边颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色</td></tr><tr><td>strength</td><td>Integer</td><td>是</td><td>4</td><td>描边强度,取值范围0~255</td></tr><tr><td>blurX</td><td>Integer</td><td>是</td><td>2</td><td>描边水平模糊量,取值范围0~255</td></tr><tr><td>blurY</td><td>Integer</td><td>是</td><td>2</td><td>描边垂直模糊量,取值范围0~255</td></tr><tr><td>msg</td><td>String</td><td>是</td><td>/</td><td>自定义错误提示信息</td></tr></tbody></table></div></div></div> </div><div class="col-12 col-lg-9 mx-auto"><div class="table-responsive-lg w-lg-75 mx-lg-auto table-wrapper" ><hr /><h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">视频播放效果截图</h5><p class="lh-base mt-2">以下为用户ID跑马灯的效果截图:</p><div class="card"><div class="card-body"><img src="assets/images/html5player-2-02.png"  alt="用户ID跑马灯功能" width="100%"></div></div><h6 class="mb-0 text-uppercase"><em>用户ID跑马灯效果(下方黄字 [ ID-张嘉文-TEL-1350909... ] 即为用户ID跑马灯)</em></h6><hr /><div class="card"><div class="card-body"><img src="assets/images/html5player-2-09.png"  alt="用户ID跑马灯功能" width="100%"></div></div><h6 class="mb-0 text-uppercase"><em>用户ID跑马灯效果(下方黄字 [ ID-张嘉文-TEL-1350909... ] 即为用户ID跑马灯)</em></h6><hr /></div> </div></div><!--end row--></div></div><!--mainpage/e--><!--overlay/b--><div class="overlay toggle-icon"></div><!--overlay/e---><!--BackToTop/b--> <a href="javaScript:;" class="back-to-top"><iclass='bx bxs-up-arrow-alt'></i></a><!--BackToTop/e--><footer class="page-footer"><p class="mb-0">教育培训场景视频加密与视频应用演示(DEMO)</p></footer>	</div><!--wrapper/e--><!--js/b--><script src="assets/js/bootstrap.bundle.min.js"></script><script src="assets/js/jquery.min.js"></script><script src="assets/plugins/simplebar/js/simplebar.min.js"></script><script src="assets/plugins/metismenu/js/metisMenu.min.js"></script><script src="assets/plugins/perfect-scrollbar/js/perfect-scrollbar.js"></script><script src="assets/js/app.js"></script><!--script src="//player.polyv.net/resp/vod-player/latest/player.js"></script--><script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js"></script><script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/plugins/line-numbers/prism-line-numbers.min.js"></script><script src='//player.polyv.net/resp/vod-player-drm/canary/player.js'></script><script>var pdiv = document.getElementById("player");var w = pdiv.offsetWidth;    // 返回元素的总宽度var h = pdiv.offsetWidth*0.5625;    // 返回元素的总高度var player = polyvPlayer({wrap: '#player',width: '100%',height: h, df: 3, autoplay: 'true',vid: 'ef03a1d2e57c5a2e4db30200e4995128_e',playsafe:'72ed976f-fba6-4375-a9bb-7d75594ff4a9-0UIDaTONYa2028', ts:'1756433090000',sign:'f7cf1267ed35a62ea6de70a305ad9cfb'});// 获取需要应用 perfect-scrollbar 的容器元素const container = document.getElementById('myContainer');// 初始化 perfect-scrollbar
// 您可以传入一个选项对象作为第二个参数来配置滚动条的行为
const ps = new PerfectScrollbar(container, {wheelSpeed: 1,         // 鼠标滚轮滚动速度wheelPropagation: true, // 当滚动到达末端时,是否将滚轮事件传播到父元素minScrollbarLength: 20, // 最小滚动条长度(像素)maxScrollbarLength: null, // 最大滚动条长度(像素)
});// 当容器或内容大小发生变化时,需要调用 update() 方法来更新滚动条
// 例如,在内容加载完成后或窗口大小调整时
window.addEventListener('resize', () => {ps.update();
});// 示例:动态添加内容并更新滚动条
setTimeout(() => {const contentDiv = container.querySelector('.content');const newParagraph = document.createElement('p');newParagraph.textContent = "这是延迟加载的新内容,滚动条应更新。";contentDiv.appendChild(newParagraph);ps.update(); // 内容改变后调用 update
}, 3000);</script><!--js/e-->
</body>
</html>

4、视频问答功能

视频问答功能,主要是指用户可以在视频播放过程中加入问题,视频播放到指定的时间点后播放器会自动弹出问题,要求观看者回答,观看者只有在正确回答问题后才能继续播放,如问题回答错误,视频可以被跳至其它指定时间点。在线视频教学应用中,交互问题插入得越多,防录屏效果越好,这不但可以提升学员的学习效果,而且大大增加了盗版者操作成本,同时降低了被盗视频的使用体验。

加密传播通道,就是对课程视频传播的渠道进行加密控制,降低课程视频二次传播的风险。

5、浏览器防录屏技术

浏览器防录屏技术,是通过播放器实时监测实现,当检测到浏览器有录制视频的行为时,立即传输信号控制视频停止播放,并向录屏用户提示终止录屏操作,阻止视频被偷录,杜绝浏览器翻录的行为。

6、域名白名单OVP视频防盗链

保利威OVP防盗链技术可以实现指定授权特定域名网站播放,俗称域名黑白名单。设置网站A白名单,则只允许视频在A网站下播放;设置网站B黑名单,则禁止视频在B网站下播放,打开视频则会提示:“ 当前视频无法播放,请向管理员反馈 #006 ”,可有效防止用户原创视频资源被非法盗用。

 【我的更多原创文章】

在线教育机构如何防范和应对课程视频侵权问题

保护付费课程不被翻录的7大视频加密技术

从“点进来”到“留下来”:在线教育机构提高课程留存率的10大功能

一篇看懂:“禁止拖动课程视频进度条”功能有什么用?

每日功能分享|提升在线教育知识掌握度的功能——AI智能大纲

在线教育课程被非法倒卖后,如何追踪泄露学员?

企业内训视频防泄密全攻略,7种视频加密方法堵住安全漏洞

每日功能介绍|在线课程提升互动效果的功能——视频问答功能

企业如何让内部视频仅限公司官网或指定域名播放?

视频加密技术和防翻录技术有哪些?

每日加密功能分享|精准锁定内容泄露者的隐形水印——AI隐形溯源水印

付费课程视频怎么做加密?教育视频文件加密的9种玩法

教育培训机构如何为课程视频添加防盗录的强水印?

在线教育培训场景下,线上授课必备的六大功能

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

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

相关文章

SOME/IP-SD中”服务器服务组播端点”、“客户端服务组播端点”与“IPv4组播选项的区分

<摘要> AUTOSIP-SD协议中组播端点&#xff08;Multicast Endpoint&#xff09;在不同上下文中的角色与表述差异。准确理解“服务器服务组播端点”、“客户端服务组播端点”与“IPv4组播选项”中配置的端点之间的关系&#xff0c;是正确实现组播事件分发机制的关键。这涉及…

计算机是如何运行的

目录 一&#xff0c;计算机是如何组成的 1.1&#xff0c;CPU中央处理单元 1.1.1&#xff0c;CPU的构成和属性 1.1.2&#xff0c;如何判断cpu的好坏 1.1.3&#xff0c;指令 1.1.4&#xff0c;CPU的缓存 1.2&#xff0c;操作系统 1.2.1&#xff0c;进程 1.2.2&#xff0…

JavaScript性能优化:实战技巧与高效策略

JavaScript性能优化实战技术文章大纲性能优化的重要性解释为什么性能优化对用户体验和业务指标至关重要列举常见性能问题的影响&#xff08;如跳出率、转化率下降&#xff09;代码层面的优化减少全局变量使用&#xff0c;避免内存泄漏使用事件委托减少事件监听器的数量避免频繁…

解决.env.production 写死 IP 的问题:Vue + config.json 运行时加载方案

背景&#xff1a;前端常用 .env.production 在构建时写死 API 地址 场景&#xff1a;运维部署时经常不知道目标主机 IP/域名 问题&#xff1a;每次 IP 变动都要重新编译 → 增加运维成本 引出需求&#xff1a;只修改 IP 就能完成部署&#xff0c;不需要重新打包 目录一、解决方…

如何从三星手机转移到另一部三星手机

三星Galaxy S系列因其出色的设计、令人惊叹的显示屏、惊艳的摄像头、更好的扬声器以及创新的指纹传感器而受到大多数用户的欢迎&#xff0c;获得了良好的声誉。让用户感到满意的是&#xff0c;三星Galaxy S10拥有更美观的设计、令人惊叹的显示屏、令人惊叹的摄像头、更好的扬声…

聚焦建筑能源革新!安科瑞 “光储直柔” 方案护航碳中和目标实现

1、背景在 “双碳” 目标引领下&#xff0c;能源结构转型与建筑能效提升成为重要课题。清华大学江亿院士提出的 “光储直柔” 新型配电系统&#xff0c;为建筑领域绿色发展提供了创新方向。光储直柔得到了业界广泛认同和积极响应&#xff0c;国家、各部委、地区陆续出台相关政策…

Shell 中 ()、(())、[]、{} 的用法详解

文章目录Shell 中 ()、(())、[]、{} 的用法详解一、先明确&#xff1a;四类符号的核心功能定位二、逐个拆解&#xff1a;用法、示例与避坑点1. ()&#xff1a;子 Shell 执行&#xff0c;隔离环境核心用法1&#xff1a;子 Shell 执行命令&#xff0c;隔离变量核心用法2&#xff…

开发避坑指南(41):Vue3 提示框proxy.$modal.msgSuccess()提示文本换行解决方案

需求 由于接口返回的提示信息过长&#xff0c;接口已经在返回提示中加入换行标签了&#xff0c;但是使用proxy.modal.msgSuccess(res.msg)提示没有换行&#xff0c;那么Vue3中proxy.modal.msgSuccess(res.msg)提示没有换行&#xff0c;那么Vue3 中 proxy.modal.msgSuccess(res.…

[Sync_ai_vid] 唇形同步推理流程 | Whisper架构

链接&#xff1a;https://github.com/bytedance/LatentSync/blob/main/docs/syncnet_arch.md docs&#xff1a;LatentSync LatentSync是一个端到端唇语同步项目&#xff0c;能够生成语音与唇形完美匹配的逼真视频。 该项目通过使用*音频条件化3D U-Net*&#xff08;一种生成式…

uniapp中 ios端 scroll-view 组件内部子元素z-index失效问题

发现子组件中的弹窗在ios手机上会被限制在scroll-view里面&#xff0c;安卓手机上不受限制&#xff0c;网上找了好久原因 scroll-view组件内部设置了 -webkit-overflow-scrolling: touch 样式&#xff0c;导致z-index失效&#xff08;safari 3D变换会忽略z-index的层级问题&…

PyTorch图像预处理完全指南:从基础操作到GPU加速实战

引言 图像预处理是模型性能的"隐形基石"&#xff0c;在计算机视觉任务中直接决定模型能否提取有效特征。科学的预处理流程能让基础模型性能提升15%以上&#xff0c;而GPU加速预处理可使数据准备阶段耗时降低60%以上。本文将聚焦PyTorch预处理核心技术&#xff0c;从基…

【前端教程】 CSS浮动布局解析与优化:从基础实现到工程化改进

浮动(float)是CSS中实现页面布局的经典技术,虽然现代布局更多使用Flexbox和Grid,但理解浮动的工作原理仍是前端开发者的基础素养。本文以一个三栏浮动布局的代码为例,从布局原理解析、潜在问题诊断、工程化优化三个维度,带你深入理解浮动布局的精髓与优化思路。 一、原代…

DVWA靶场通关笔记-暴力破解(Impossible级别)

目录 一、查看源码 二、功能分析 三、SQL注入分析 1、使用PDO预处理语句和参数绑定 2、mysqli_real_escape_string转义 3、stripslashes去除反斜杠 四、暴力破解分析 1、token防止暴力破解机制 2、登录失败随机延迟机制 3、登陆失败报错信息相同 4、登陆失败的账户…

IAR工程如何生成compile_commands.json文件(能生成但是clangd不能生成“.cache文件”)

最近一直在使用vscodeclangd的方式编写代码&#xff0c;感觉使用clangd查找函数调用、函数声明、类型定义等等都比使用vscode自带的c/c插件好用太多了。现在我有一个功能是IAR版本的&#xff0c;那么有没有办法生成clangd使用的compile_commands.json文件呢&#xff1f;答案是&…

QT5.14.2、CMake 扩展openCV

一、准备工具Qt5.14.2c11cmake3.24.0opencv3.4.16二、使用cmake可扩展opencv 首先解压cmake、opencv 两个下载的压缩包&#xff0c;如下&#xff1a;运行cmake-gui.exe打开后有弹窗选择&#xff0c;然后进入QT的安装路径下找 mingw73_64文件下的 C和C的执行文件这个截图是我扩展…

【3D入门-指标篇下】 3D重建评估指标对比-附实现代码

3D重建评估指标对比表 每个指标的具体代码位于文章末尾指标计算方法数值范围评估重点优缺点适用场景Chamfer Distance (C1)从预测网格到真实网格的平均距离[0, ∞)几何形状准确性优点&#xff1a;直观、计算高效缺点&#xff1a;对噪声敏感整体形状评估Chamfer Distance (C2)从…

香港电讯创新解决方案,开启企业数字化转型新篇章

在数字化浪潮席卷全球的今天&#xff0c;企业正加速突破传统办公和业务模式的桎梏&#xff0c;力求通过高效协同与业务创新实现跨越式发展。香港电讯作为科技解决方案提供商&#xff0c;持续推动技术创新应用。近期&#xff0c;香港电讯通过多项创新应用、产品升级及战略合作&a…

数据分析编程第六步:大数据运算

6.1 数据介绍直接打开集算器运行 createEventsAndUsers.splx 文件&#xff0c;就可以得到如下两张表&#xff08;也可以根据代码中的注释&#xff0c;修改起止日期以及每天的数据量&#xff09;&#xff1a;电商数据表 events.csv字段名含义eventID事件编号, 从 1 开始流水号us…

vue2+elementui 表格单元格增加背景色,根据每列数据的大小 颜色依次变浅显示2

注意&#xff1a; 正数前5和负数后5的颜色是固定的&#xff0c;剩下5之后的数据颜色是根据第5个颜色依次变浅的&#xff1b; 封装的js方法&#xff1a; /*** 最终版表格颜色处理器* param {Array} data 完整表格数据* param {String} field 当前字段名* param {Object} row 当前…

【AOSP】Android Dump 开发与调试指南

在 Android 系统开发与调试中&#xff0c;dump 是一个不可或缺的强大工具。它能够提供关于系统服务、应用程序状态以及底层硬件信息的详细快照。对于希望深入了解 Android 系统内部工作原理、排查复杂问题或进行性能优化的开发者来说&#xff0c;掌握 dump 的使用至关重要。一、…