网站内部推广,网站建设的组织保障,做网站毕业设计,腾讯企业邮箱登录入口二维码企业内训课程、在线教育平台付费课程加密防下载的10种方式#xff1a;
实例演示#xff1a;课程视频-第1课状语从句,VRM演示应用
企业内训课程、在线教育平台付费课程#xff0c;他们的这种视频课程的加密是如何做的#xff1f;整理了10种思路#xff0c;供大家参考
实例演示课程视频-第1课状语从句,VRM演示应用
企业内训课程、在线教育平台付费课程他们的这种视频课程的加密是如何做的整理了10种思路供大家参考 1.VRM分片错序视频加密
采用分布式编码技术将视频文件物理切片每片视频进行多种算法混合型加密 同时结合独立研制密码本将关键数据进行错序混淆对视频文件进行最高级别加密这样经过加密的视频内容即使被下载也无法进行恶意的二次分发视频破解难度倍增。 2.Html5全链路视频加密
市面上常见的H5加密采用标准的Apple HLS Encryption 视频保护机制我们在此基础上进行深度优化对密钥key进行深度加密同时实现对视频播放器与视频数据文件双重加密处理形成端到端的全链路视频安全防护即使视频文件被盗用其他应用也无法播放让视频更加安全。 我们的加密调用方法示例
div idplayer/div
script src//player.polyv.net/script/player.js/script
script
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
});
/scriptWeb页面播放加密视频前需要先访问业务方自己的服务端授权验证接口可以在这里加上自有业务的授权验证逻辑例如是否登录、是否购买课程等, 建议使用HTTPS。如果业务上允许播放则通 过创建 Playsafe Token接 口获取播放凭证或者在服务端生成sign、ts参数并返回给Web端播放器。 服务端生成播放凭证代码示例
// 接口中应附带自有业务的授权验证逻辑如判断是否登录、是否购买课程等// 以下为生成播放凭证的代码示例
function get_client_ip() {if (!empty($_SERVER[HTTP_CLIENT_IP])) {$ipaddress $_SERVER[HTTP_CLIENT_IP];} elseif (!empty($_SERVER[HTTP_X_FORWARDED_FOR])) {$ipaddress $_SERVER[HTTP_X_FORWARDED_FOR];} else {$ipaddress $_SERVER[REMOTE_ADDR];}return $ipaddress;
}$userId your userId; // 保利威点播账号的userId
$secretkey your secretkey; // 保利威点播账号的secretkey
$videoId 88083abbf5bcf1356e05d39666be527a_8; // 视频vid
$ts time() * 1000; // 时间戳
$viewerIp get_client_ip(); // 观众ip
$viewerId 12345; // 观众id
$viewerName testUser; // 观众昵称, 若值为中文需要urlencode(张三)
$extraParams HTML5; // 自定义扩展参数
$disposable false // true 表示 token 仅一次有效。false 则表示在有效期内可以多次验证。默认为 false。/* 将参数 $userId、$secretkey、$videoId、$ts、$viewerIp、$viewerIp、$viewerId、$viewerName、$extraParams按照ASCKII升序 key value key value ... value 拼接
*/
$concated extraParams.$extraParams.ts.$ts.userId.$userId.videoId.$videoId.viewerId.$viewerId.viewerIp.$viewerIp.viewerName.$viewerName;
// 首尾加上secretkey值
$plain $secretkey.$concated.$secretkey;
// 取大写MD5
$sign strtoupper(md5($plain));// 然后将下列参数用post请求 https://hls.videocc.net/service/v1/token 获取 token
$url https://hls.videocc.net/service/v1/token;
$data array(userId $userId, videoId $videoId, ts $ts, viewerIp $viewerIp, viewerName $viewerName, extraParams $extraParams, viewerId $viewerId, sign $sign);
$options array(http array(header Content-type: application/x-www-form-urlencoded,method POST,content http_build_query($data))
);
$context stream_context_create($options);
$result file_get_contents($url, false, $context);// 获取接口返回结果中的token值, 并传给播放器播放加密视频
$token json_decode($result)-data-token;
echo $token;Java SpringMvc代码
ResponseBody
RequestMapping(/playerSafe)
public String playerSafe(HttpServletRequest request) {String userId your userId; // 保利威点播账号的userIdString secretkey your secretkey; // 保利威点播账号的secretkeyString videoId 88083abbf5bcf1356e05d39666be527a_8; // 视频vidlong ts System.currentTimeMillis(); // 时间戳String viewerIp getClientIp(request); // 观众ipString viewerId 12345; // 观众idString viewerName testUser; // 观众昵称, 若值为中文需要urlencode(张三)String extraParams HTML5; // 自定义扩展参数boolean disposable false; // true 表示 token 仅一次有效。false 则表示在有效期内可以多次验证。默认为 false。/* 将参数 userId、secretkey、videoId、ts、viewerIp、viewerIp、viewerId、viewerName、extraParams按照ASCKII升序 key value key value ... value 拼接*/String concated extraParams extraParams ts ts userId userId videoId videoId viewerId viewerId viewerIp viewerIp viewerName viewerName;// 首尾加上secretkey值String plain secretkey concated secretkey;// 取大写MD5可自行选择md5库String sign md5Hex(plain).toUpperCase();// 然后将下列参数用post请求 https://hls.videocc.net/service/v1/token 获取 tokenString url https://hls.videocc.net/service/v1/token;MapString, String params new HashMap();params.put(userId, userId);params.put(videoId, videoId);params.put(ts, String.valueOf(ts));params.put(viewerIp, viewerIp);params.put(viewerName, viewerName);params.put(extraParams, extraParams);params.put(viewerId, viewerId);params.put(sign, sign);// 可自行选择http客户端String response HttpClientUtil.getInstance().sendHttpPost(url, params);try {//解析jsonObjectMapper objectMapper new ObjectMapper();TokenResponse tokenResponse objectMapper.readValue(response, TokenResponse.class);// 响应代码200为成功403为ts过期或签名错误400为参数错误例如缺少 userId 或 videoIdif (tokenResponse.getCode() 200) {Map data (Map) tokenResponse.getData();return data.get(token).toString();}} catch (IOException e) {e.printStackTrace();}return ;
}
static class TokenResponse {int code;String status;String message;Object data;//省略getter、setter...
}
public String getClientIp(HttpServletRequest request) {String ip request.getHeader(x-forwarded-for);if (ip null || ip.length() 0 || unknown.equalsIgnoreCase(ip)) {ip request.getHeader(Proxy-Client-IP);}if (ip null || ip.length() 0 || unknown.equalsIgnoreCase(ip)) {ip request.getHeader(WL-Proxy-Client-IP);}if (ip null || ip.length() 0 || unknown.equalsIgnoreCase(ip)) {ip request.getRemoteAddr();}return ip;
}3.用户ID跑马灯 将用户I的ID、电话号码或其他信息内容等设置在视频上不规则跑动作追溯盗版者用。 ID跑马灯功能是指通过设定文字内容一般是观众的身份ID信息在视频上不规则滚动以此来警示盗版者达到视频版权保护的效果示例中是将用户的ID和电话号码显示出来。 4.数字化动态水印 将用户ID、电话号码或其他信息内容等以动态水印形式展现在视频上实现水印在视频上不规则地显现可追溯录屏者身份对翻录行为起到强有力的震慑作用。 5.浏览器防录屏 通过播放器实时监测如果检测到视频处于录屏状态或小窗待录屏状态视频会立即停止播放显示报错信息视频无法继续播放。 6.视频水印 (企业LOGO)
在视频中添加企业专属的视频水印从而让视频中融入企业的版权信息防止盗录者盗取版权保护公司的知识产权。视频上传后自动将企业的LOGO图标水印加在视频右上角/右下角等位置上。 7.域名白名单OVP防盗链
通过OVP防盗链技术实现指定网站播放俗称域名黑白名单。设置网站A白名单则只允许视频在A网站下播放设置网站B黑名单则禁止视频在B网站下播放可有效防止用户原创视频资源被非法盗用。 8.ATS/HTTPS数据防篡改
HTTPS协议采用了HTTPS协议其提供网站身份验证与加密通讯方法避免信息截韧“钓鱼”攻击有效防止网页被篡改保证企业及学员间的信息 安全ATS标准苹果操作系统遵循ATS标准开启ATS安全特性后网络传输自动通过HTTPS协议进行传输保证视频播放安全。 9.播放器代码混淆加密
播放器代码加密防反编译、代码混淆等方式。 10.禁止拖动视频进度条
html5播放器禁止拖拽功能实例常用于场景企业培训、在线教学内容禁止学员拖动视频进行观看。 我的文章推荐
[视频图文] 线上研讨会是什么企业对内对外培训可以用线上研讨会吗[图文] 企业直播对网络带宽有什么要求[图文]OBS如何实现毫秒级超低延时直播直播播放器API播放器调用方法、参数、接口和事件 企业直播要如何做硬件设备、网络环境有哪些要求