在知识付费行业,课程翻录和盗版问题一直是内容创作者的“心头大患”。盗录技术的升级让维权变得困难重重。但别担心!本文将为您介绍7大防翻录技术视频加密方案。
1、浏览器防录屏
2、域名白名单OVP视频防盗链
3、ATS/HTTPS数据防劫持防篡改
4、视频水印/企业图标
5、视频问答功能
6、禁用视频课程进度条
7、AI隐形溯源水印
一、浏览器防录屏
通过播放器实时监测实现,当检测到浏览器有录制视频的行为时,立即传输信号控制视频停止播放,并向录屏用户提示终止录屏操作,阻止视频被偷录,杜绝浏览器翻录的行为。有效削弱市面主流的浏览器录屏功能(如360/QQ浏览器等),捍卫视频版权。
浏览器防录屏效果示例
二、域名白名单OVP视频防盗链
业界领先的OVP技术,设置视频只允许某些域名下才能正常播放,其他域名不能播放。打开视频则会提示:“ 当前视频无法播放,请向管理员反馈 #006 ”或“ 该站点未被授权播放该视频 ”。通过保利威OVP防盗链技术可以实现指定授权特定域名网站播放,俗称域名黑白名单。设置网站A白名单,则只允许视频在A网站下播放;设置网站B黑名单,则禁止视频在B网站下播放,可有效防止用户原创视频资源被非法盗用。
域名白名单OVP视频防盗链效果示例
三、ATS/HTTPS数据防劫持防篡改
ATS是苹果在iOS 9引入的安全机制,强制要求APP与服务端通信必须通过HTTPS协议(而非HTTP),确保数据传输全程加密。这种加密能有效防止中间人攻击(MITM),避免传输过程中数据被劫持或篡改。HTTPS加密通道是通过SSL/TLS协议建立加密通道,任何篡改行为会导致解密失败或签名验证不匹配,从而被系统识别为非法数据。
四、视频水印/企业图标
在视频中添加企业专属的视频水印,从而让视频中融入企业的版权信息,防止盗录者盗取版权,保护公司的知识产权。视频上传后自动将企业的LOGO图标水印加在视频右上角/右下角等位置上。
五、视频问答功能
视频播放器的视频问答功能(也叫问答播放器、视频弹题、视频问答功能)是一种互动的教学功能,在教育培训机构中,用的比较多。视频问答功能,主要是在视频播放过程中,弹出问题卡片,学员回复问题后,再继续播放,增强学员的参与度和学习效果。
视频问答功能代码调用示例
<!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>问答播放器/视频弹题观看效果</title>
<meta name="Keywords" content="问答播放器/视频弹题观看效果,视频企业图标,防录屏,视频防盗录,视频防录屏" />
<meta name="Description" content="在线教育、在线培训、视频教学课程如何问答播放器/视频弹题观看效果?即不能点击进度条,提前观看内容;或拖动进度条到新的位置上播放,这个在教育培训的场景中,应用非常广。" />
<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="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>
</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">Edu Html5Player加密视频播放器</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"> 问答播放器/视频弹题功能</h5>
<div class="lh-base mt-2">视频播放器的视频问答功能(也叫问答播放器、视频弹题、视频问答功能)是一种互动的教学功能,在教育培训机构中,用的比较多。视频问答功能,主要是在视频播放过程中,弹出问题卡片,学员回复问题后,再继续播放,增强学员的参与度和学习效果。</div>
<div>
以下是该功能的一些主要特点:<br>
<strong>01.与培训视频内容的互动性:</strong> <br>
视频播放到特定时间点时,会弹出问题卡片,学员必须正确回答问题后才能继续观看视频;回答错误,则向前返回一小段视频,重新观看。<br>
<strong>02.学员离线防挂机:</strong> <br>
通过强制学员回答问题,有效避免学员挂机现象,确保学员积极认真的参与学习。<br>
<strong>03.课程内容防录屏、防盗录:</strong> <br>
问答功能可以降低盗版视频的观看体验,因为录屏后的视频无法正常播放。<br>
</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">问答播放器。</p>
<div id="myContainer" style="position: relative; background-color: #f9f9f9; padding: 10px;height:300px;overflow: hidden;padding:0;margin:0;">
<pre class="line-numbers" style="padding:0;margin:0;padding-left:10px;"><code class="language-html" ><div id="player"></div>
<script src="//player.polyv.net/resp/vod-player/latest/player.js"></script>
<script>
var player = polyvPlayer({
wrap: '#player',
width: 800,
height: 533,
ban_seek:'on', //禁止拖动视频进度条(on,off)
//ban_seek_by_limit_time:'on', //是否禁止视频拖拽未播放区域(on,off)
vid: '88083abbf5bcf1356e05d39666be527a_8',
playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx',
//playsafeUrl:'https://myDomain.com/token',
ts:'1568131545000',
sign:'88313661ba7ded642c7b557b0a364b4b'
});
player.on('s2j_onPlayerInitOver',
function(e) {
var question1 = [{
"examId": "1699e49ffeb",
"question": "第1个问题:1 x 2 = ?",
"choices": [{
"answer": "1"
},
{
"answer": "2",
"right_answer": 1
},
{
"answer": "3"
},
{
"answer": "4"
}],
"answer": "",
"wrongAnswer": "",
"skip": true,
"wrongTime": 5,
"showTime": 10
}];
player.sendQuestion(question1);
});
window.onQuestionSkip = function(data, vid) {
console.log('onQuestionSkip', data, vid);
}
window.onQuestionPopUp = function(data, vid) {
console.log('onQuestionPopUp', data, vid);
}
window.onAnswerResult = function(isRight, data, msg, seekTime, vid) {
console.log('onAnswerResult',isRight, data, msg, seekTime, vid);
if (!isRight) {
var question2 = [{
"examId": "1699e49ffef",
"question": "第2个问题:2 x 2 = ?",
"choices": [{
"answer": "1"
},
{
"answer": "2"
},
{
"answer": "3"
},
{
"answer": "4",
"right_answer": 1
}],
"answer": "",
"wrongAnswer": "",
"skip": true,
"wrongTime": 5,
"showTime": 10
}];
player.changeQuestion(10, question2);
}
}
</script></code></pre></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">以下为问答播放器/视频弹题的效果截图:</p>
<div class="card">
<div class="card-body">
<img src="assets/images/qa-player-1-01.png" alt="问答播放器/视频弹题观看效果" width="100%">
</div>
</div>
<h6 class="mb-0 text-uppercase"><em>问答播放器/视频弹题的效果(正常播放视频画面)</em></h6>
<hr />
<div class="card">
<div class="card-body">
<img src="assets/images/qa-player-1-02.png" alt="问答播放器/视频弹题观看效果" width="100%">
</div>
</div>
<h6 class="mb-0 text-uppercase"><em>问答播放器/视频弹题的效果(由于设置视频问答弹题的时间点为第95秒,所以会在该指定时间点,弹出问题)</em></h6>
<div>(注:弹出题目的内容,通常是视频刚刚介绍过的内容,学员在学习之后,看到弹出的问题,再进行回答,以达到强化学习要点的要求。)</div>
<hr />
<div class="card">
<div class="card-body">
<img src="assets/images/qa-player-1-03.png" alt="问答播放器/视频弹题观看效果" width="100%">
</div>
</div>
<h6 class="mb-0 text-uppercase"><em>问答播放器/视频弹题的效果(学员回答错误,播放器弹出回答错误的提示)</em></h6>
<hr />
<div class="card">
<div class="card-body">
<img src="assets/images/qa-player-1-04.png" alt="问答播放器/视频弹题观看效果" width="100%">
</div>
</div>
<h6 class="mb-0 text-uppercase"><em>问答播放器/视频弹题的效果(学员回答正确时,弹出回答正确的提示,并继续播放视频。)</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"><i
class='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', ban_record_interaction_right_answer:'on',
vid: 'ef03a1d2e56b28e98489335286137b0f_e',
playsafe:'5d150cef-584b-40c4-bf97-b7c25a530f95-pUIDaTONYa2028',
ts:'1753926326000',
sign:'d91b03eca1ce217f7173c7c6d4fca9bc'
});
// 获取需要应用 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);
// 示例:销毁滚动条
// setTimeout(() => {
// ps.destroy();
// console.log('Perfect Scrollbar 已销毁。');
// }, 10000);
</script>
<!--js/e-->
</body>
</html>
视频问答功能效果示例
六、禁用视频课程进度条
这一功能的具体操作是将视频进度条禁用,观看者无法通过进度条随意调整观看进度,必须完整观看整个视频。禁用视频课程进度条功能分为完全禁止拖动视频播放器进度条和禁止拖动视频播放器“未播放区域”的进度条(已播放过区域的进度条可以拖动)。进度条禁用后,用户无法随意跳转或重复播放特定片段,迫使盗录者必须完整观看整个视频才能获取全部内容。这大幅增加盗录时间成本,降低盗录效率。
禁用视频课程进度条代码调用示例
禁止拖动视频播放器"未播放区域"的进度条(已播放过区域的进度条可以拖动)
<!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>禁用拖动视频进度条</title>
<meta name="Keywords" content="禁用拖动视频进度条,视频企业图标,防录屏,视频防盗录,视频防录屏" />
<meta name="Description" content="在线教育、在线培训、视频教学课程如何禁用拖动视频进度条?即不能点击进度条,提前观看内容;或拖动进度条到新的位置上播放,这个在教育培训的场景中,应用非常广。" />
<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="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="mm-active"> <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>
</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">Edu Html5Player加密视频播放器</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"> 禁用拖动视频进度条</h5>
<div class="lh-base mt-2">禁用视频课程进度条的拖动功能,主要是为了强制学员按照课程设计的顺序观看内容,防止跳过关键知识点,从而保证学习效果和课程的完整性。 这在以下几种教育场景中尤为常见和有意义。</div>
<div>
<strong>01.防止应试作弊:</strong> <br>
在一些需要观看视频才能解锁下一章节或完成测试的场景中,禁用拖动能确保学员真正观看了教学内容,而不是仅仅为了完成任务而快进。<br>
<strong>02.强制观看基础知识:</strong> <br>
对于那些知识点层层递进的课程(例如编程、数学等),禁用拖动能确保学员从最基础的概念开始学习,避免跳过前提知识导致后续学习困难。<br>
<strong>03.确保操作步骤的理解:</strong> <br>
在涉及具体操作演示(如软件教程、实验操作、手工制作等)的课程中,学员必须一步步跟着视频操作才能掌握技能。禁用拖动能防止他们跳过关键步骤导致操作失败。<br>
<strong>04.准确统计学习时长:</strong> <br>
一些在线教育平台会根据学员的实际观看时长来评估学习进度或颁发证书。禁用拖动可以确保统计的数据更真实,反映学员投入的实际时间。
</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">代码调用示例(1)</h5>
<p class="lh-base mt-2">完全禁止拖动视频播放器进度条。</p>
<pre class="line-numbers"><code class="language-html">
<div id="player"></div>
<script src="//player.polyv.net/resp/vod-player/latest/player.js"></script>
<script>
var player = polyvPlayer({
wrap: '#player',
width: 800,
height: 533,
ban_seek:'on', //禁止拖动视频进度条(on,off)
//ban_seek_by_limit_time:'on', //是否禁止视频拖拽未播放区域(on,off)
vid: '88083abbf5bcf1356e05d39666be527a_8',
playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx',
//playsafeUrl:'https://myDomain.com/token',
ts:'1568131545000',
sign:'88313661ba7ded642c7b557b0a364b4b'
});
</script></code></pre>
<h5 class="mb-0 text-uppercase fw-bold lh-base mt-2">代码调用示例(2)</h5>
<p class="lh-base mt-2">禁止拖动视频播放器"未播放区域"的进度条(已播放过区域的进度条可以拖动)</p>
<pre class="line-numbers"><code class="language-html">
<div id="player"></div>
<script src="//player.polyv.net/resp/vod-player/latest/player.js"></script>
<script>
var player = polyvPlayer({
wrap: '#player',
width: 800,
height: 533,
//ban_seek:'on', //禁止拖动视频进度条(on,off)
ban_seek_by_limit_time:'on', //是否禁止视频拖拽未播放区域(on,off)
vid: '88083abbf5bcf1356e05d39666be527a_8',
playsafe:'81814fed-bdd0-4506-bec1-ebc8093148c5-hfevwsfxcsbcocx',
//playsafeUrl:'https://myDomain.com/token',
ts:'1568131545000',
sign:'88313661ba7ded642c7b557b0a364b4b'
});
</script></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">以下为禁止拖动视频播放器进度条的截图:</p>
<div class="card">
<div class="card-body">
<img src="assets/images/html5player-2-10.png" alt="禁用拖动视频进度条" width="100%">
</div>
</div>
<h6 class="mb-0 text-uppercase"><em>禁用拖动视频进度条的效果(播放器会显示进度条,但进度条被禁用,因此无法拖动和操作)</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"><i
class='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',ban_seek_by_limit_time:'on', //是否禁止视频拖拽未播放区域(on,off)
vid: 'ef03a1d2e552ac0796656e95275522fb_e',
playsafe:'b30bbbd6-aec1-4e44-84a1-5d34f3ca1e82-0UIDaTONYa2028',
ts:'1753926598000',
sign:'2f7125ac9e7f6fad46261cc9b4029508'
});
</script>
<!--js/e-->
</body>
</html>
七、AI隐形溯源水印
保利威AI隐形溯源水印是一项结合人工智能与数字水印技术的版权保护方案,主要应用于在线教育、企业视频、影视资源保护等领域。通过在视频中嵌入人眼不可见的隐形水印,实现防盗录盗播、全链路版权保护和实时溯源功能。嵌入隐形水印,不影响观看体验,但能有效追踪盗录行为。