授权播放和防录屏跑马灯

屏幕录像是最难防范的一种视频盗版方式,保利威播放器提供的防录屏跑马灯功能,通过设定文字内容(一般是观众的身份ID信息)在视频上不规则滚动,以此来警示盗版者,达到视频版权保护的效果。

另外在用户网站中,除了通过登录信息(cookies)验证观众是否有权限访问视频播放页面外,还可以通过保利威播放器验证观众是否有播放某一个视频的权限,从而实现对观众权限的双重验证。

防录屏跑马灯的视频介绍:防录屏神器–跑马灯(视频)

实现流程

image-20200831160621474

实现步骤

一、管理后台设置

  1. 登录云点播管理后台,点击 【设置】【视频设置】,进入视频设置页面。
  2. 在授权播放和防录屏跑马灯接口设置栏中,填写业务方的接口服务URL。
    image-20200831161317380

播放器在请求授权接口时,会自动适配以下情况:

  1. 当填写的是完整的URL时,播放器会直接请求,例如:http://mywebsite.com/interface/validate。
  2. 当填写的是不带协议头的接口地址时,播放器会根据当前页面的请求协议自动补全。例如填写的是://mywebsite.com/interface/validate,当前页面使用https协议访问,那么实际请求的是:https://mywebsite.com/interface/validate。
  3. 当填写的是不带协议头和HOST的接口地址时,播放器会根据当前页面的请求协议和HOST自动补全。例如填写的是:/interface/validate 或 interface/validate,当前页面的域名是mywebsite2.com,且页面使用http协议访问,那么实际请求的是:http://mywebsite2.com/interface/validate。

二、业务方服务端实现

1、播放器端请求

当管理后台设置授权播放和跑马灯接口后,Polyv播放器在播放视频时会首先请求后台设置的接口,请求的方式为GET,并且会附带vid、code、t、callback这四个参数,例如:https://www.mywebsite.com/validate?vid=e2e84a73837363106d8d257f60e55c4c_e&code=&t=1457938821973&callback=polyvObject16209048491895664483_1457938783908&_=1457938784101。

其中code为播放器嵌入代码中的参数,值可以自定义;t为播放器产生的随机数。播放器示例代码如下:

<script src='https://player.polyv.net/script/player.js'></script>
<div id='player'></div>
<script>
var player = polyvPlayer({
    wrap: '#player',
    width: 800,
    height: 533,
    vid: '88083abbf5bcf1356e05d39666be527a_8',   
    code: 'myCodeValue'  // 用户可自定义参数值,也可以不设置此参数,那么在请求接口时该参数值为空。参数值为中文时需要做base64URLSafe。
});
</script>

由于H5播放器通过Ajax方式请求用户接口,需要跨域请求,因此需要callback参数。而Flash播放器是通过跨域文件实现跨域,所以不需要callback参数,请求接口时只会提交vid、code和t三个参数。Flash播放器实现跨域请参考跨域访问设置

2、服务端接口实现

业务方服务端接口如果只需实现授权验证的功能,只需返回 status、username、sign三个参数给播放器验证即可。

服务端实现的PHP示例如下:

// validate.php
<?php
$username = "elvis"; // 用户昵称, 若值为中文需要urlencode('张三'),可从session获取
$secretkey = "secretkey"; // 登录保利威管理后台,点击 【设置】 → 【API接口】获取
$vid=$_GET["vid"];
$t = $_GET["t"];
$code = $_GET["code"];

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");
$array=Array("status"=>$status,"username"=>$username,"sign"=>$sign);
$Json = json_encode($array);

if($callback!=''){ //PC H5播放器会提交callback参数
  echo $callback."(".$Json.")";
} else{ //Flash播放器不提交callback参数
  echo "(".$Json.")";
}
?>

其中,sign的计算规则为:拼接vid、secretkey、username、code、status、t参数做MD5计算:

Plain ="vid=" + vid + "&secretkey=" + secretKey + "&username=" + username + "&code=" + code + "&status=" +status + "&t=" + t
sign = MD5.hash(Plain);

以下为接口返回示例:

  polyvObject16208229674372271079_1478765178186({
  "status":1,
  "username":"elvis",
  "sign":"1cca74bd55c6076091ed84807065e5b7"
  })
// 不提交callback参数时
{
  "status":1,
  "username":"elvis",
  "sign":"2c2bfb00314da7d768d50a7d1e93bd9f"
}

如果除了授权验证,还需实现跑马灯功能,则接口需要返回跑马灯相关的参数。

服务端实现的PHP示例如下:

// validate.php
<?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;
}
?>

其中,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);

例如:当vid="8f8482aaab11dd5f45f183a9192a04c5_8",secretkey="AiDQw1mAmi",username="suki",code="abc",status="1",t="143020010115550947",msg="Errormessage!",fontSize="40",fontColor="0xFFE900",speed="200",filter="on",setting="3",alpha="1",filterAlpha="1",filterColor="0x3914AF",blurX="2",blurY="2",interval="5",lifeTime="3",tweenTime="1",strength="4",show="on"时,
拼凑起来去MD5计算的字符串为:
vid=8f8482aaab11dd5f45f183a9192a04c5_8&secretkey=AiDQw1mAmi&username=suki&code=abc&status=1&t=143020010115550947&msg=Errormessage!&fontSize=40&fontColor=0xFFE900&speed=200&filter=on&setting=3&alpha=1&filterAlpha=1&filterColor=0x3914AF&blurX=2&blurY=2&interval=5&lifeTime=3&tweenTime=1&strength=4&show=on
则sign为MD5计算后32位小写的值:3b07f56f29b7fd728bf20020442338e7

以下为接口返回示例:

{
  "status":1,
  "username":"elvis",
  "sign":"6ab63590797e513d1b6c46b407413478",
  "msg":"Errormessage!",
  "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"
}

三、接口返回参数说明

参数名 类型 必填 默认值 说明
status Integer / 是否允许播放:1 允许 2 禁止
username String / 观众名称,也会用于跑马灯显示的文字内容。如果是中文需要做URLEncode
sign String / 接口签名,用于校验返回内容是否被篡改
show String off 当参数值为“on”时表示显示跑马灯,默认不显示
setting Integer 1 跑马灯滚动的样式:1 从右到左滚动 2 随机位置闪烁 3 从右到左闪烁滚动
speed Integer 200 跑马灯文字从右侧移至左侧所需时间,单位:1/10秒
lifeTime Integer 3 跑马灯文字显示时间,单位:秒
interval Integer 5 跑马灯文字隐藏间隔时间,单位:秒
tweenTime Integer 1 跑马灯文字渐隐渐现时间,单位:秒
fontSize Integer 30 跑马灯文字的字体大小
fontColor String 0x000000 跑马灯文字颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
alpha Float 1 跑马灯文字透明度,取值范围0.01~1,参数值不能小于0.01
filter String off 跑马灯文字是否描边,on 描边 off 不描边
filterAlpha Float 1 文字描边透明度,取值范围0~1
filterColor String 0x000000 文字描边颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
strength Integer 4 描边强度,取值范围0~255
blurX Integer 2 描边水平模糊量,取值范围0~255
blurY Integer 2 描边垂直模糊量,取值范围0~255
msg String / 自定义错误提示信息
  1. 当接口只做授权验证用途时,只需返回 status、username和sign三个参数,跑马灯相关参数可不返回。
  2. 请确保接口返回数据是utf-8编码,注意 status参数是整型,不能是字符串类型。
  3. 目前跑马灯功能不支持在移动端H5播放器上使用。
  4. 请尽量不要对播放器样式或\标签进行修改
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

视频加密

域名黑白名单、授权播放等安全机制主要用于控制视频播放请求来源的合法性,能够有效保障用户的合法访问。但这些机制不会对视频数据本身进行加密,对于付费观看视频的业务场景,用户只需通过一次付费行为拿到视频资源URL便可将视频下载到本地并进行二次分发,因此,这些机制对于视频版权保护是不够的。

保利威视频加密采用私有的加密算法,提供包括加密转码、安全传输、解密播放等一体化的视频安全方案。通过对视频数据本身进行高强度的加密,视频文件即使被下载到本地也无法直接播放和传播,可有效防止视频泄露和盗版问题。

核心优势

保利威视频加密的核心优势有:

  • 保利威视频加密功能采用自有知识产权的专利技术,视频的加密转码、传输、解密播放全部受私有算法保护,破解难度极高。
  • 每个视频文件都有独立的私钥,能有效避免一个密钥的泄露引起大范围的安全问题。播放器和服务端使用加密协议进行密文传输,有效防止密钥被窃取。
  • 提供多套不同安全级别的加密方案,可根据自身业务场景选择。
  • 提供安全的播放器SDK,覆盖H5、Flash、iOS、Android、小程序、桌面客户端等多平台,且加密视频必须使用保利威安全播放器才能播放。
  • 云点播平台提供了完整的加密视频播放授权体系,开发者只需获取播放凭证并传入Polyv播放器即可实现加密播放,免去了凭证和密钥的管理、验证、分发等开发工作。
  • Polyv播放器提供的授权播放和防录屏跑马灯功能,进一步加强了版权保护能力。
  • 保利威服务于上千家在线教育客户,视频版权保护技术不断更新迭代,始终处于行业领先水平。

流程架构

点播视频加密和解密播放的整体架构流程如下:

video-encryption

使用说明

一、后台配置

在云点播管理后台,支持针对整个账号或某个视频分类进行加密设置,操作流程如下:

1、登录云点播管理后台,点击 【设置】【加密设置】,进入加密设置页面。

image-20200915115350189

  • 视频加密设置:打开后,新上传的视频都会经过加密转码。
  • 加密视频授权设置:播放加密视频有四种授权方式,分别为:非加密授权、Web授权、App授权和小程序授权。这四种授权方式的安全级别不同,支持播放的终端也不同,您可以根据自身业务场景选择合适的授权方式。详见下表:

    授权方式/支持终端 PC Web 手机H5 手机APP PC 客户端 微信小程序
    非加密授权
    WEB授权
    APP授权 × ×
    小程序授权 ×
    1. 安全级别从高到低排序为:APP授权 > 小程序授权 > WEB授权 > 非加密授权。
    2. 如果您的业务场景只有手机APP播放,建议选择“APP授权”,如果有手机H5播放视频的需求,建议选择“WEB授权”,但Web授权的安全级别低于APP授权。
    3. 加密视频只能通过保利威提供的安全播放器SDK才能播放。

2、开启加密设置后,所有新上传的视频都会经过加密转码。管理后台还支持只对某一视频分类进行单独设置。操作方式为:点击 【视频列表】【视频分类管理】,选中某个分类,点击【分类属性设置】,进行分类下的加密设置。

image-20200915135521582

二、播放加密视频

加密视频必须使用保利威提供的播放器才能播放,云点播提供Web端、iOS、Android、小程序、桌面客户端等多平台的播放器SDK,以便您快速在自身应用或网站中集成。

  • Web播放器(PC/手机 H5、Flash):通过引入Polyv Web播放器代码,可在自己的Web页面嵌入播放器并实现播放,详见:Web端播放加密视频
  • 移动端播放器(iOS、Android SDK):用户可以通过SDK快速集成视频播放能力到自己的应用中,详见:iOS SDKAndroid SDK
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

视频水印

视频水印是指在视频转码时,将水印图片编码进视频流中,使水印图片成为视频的一部分。企业可以把专属的Logo等信息作为视频水印显示在视频画面中,以此来展示企业版权信息和品牌形象。

需要注意的是,由于水印图片已经编进视频流,所以转码后的视频无法再次修改和隐藏水印。如需修改,只能重新设置水印并上传视频。

关于水印与播放器Logo的区别,详见:如何区分水印和LOGO

在管理后台设置水印

在云点播管理后台,支持针对整个账号或某个视频分类进行水印设置,操作流程如下:

  1. 登录云点播管理后台,点击 【设置】【视频设置】,进入视频设置页面。
  2. 在视频水印设置栏中,上传水印图片并设置水印的显示位置。设置水印后,会对账号下所有新上传视频生效。

    image-20200914115910569

  3. 如果只想针对某个视频分类进行水印设置时,点击 【视频列表】【视频分类管理】,选取要设置水印的某个分类,点击【分类属性设置】,打开分类属性的设置弹窗。在视频水印处,可以上传水印图片并指定显示位置。

    image-20200914140742617

注:
1. 水印图片需要为png格式,图片宽或高的尺寸超过256px时会被等比缩放。
2. 水印设置成功后,只对新上传的视频生效,旧视频不受影响。
3. 云点播平台还支持利用ASS字幕文件来实现动态水印的效果,详见:通过ASS字幕实现动态视频水印效果

通过API设置水印

您可以通过API来设置账号或分类级别的水印,详见:设置视频水印

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放域名黑白名单

云点播平台的视频在Web端都是通过用户网站进行播放的,保利威云点播提供了播放域名黑白名单的设置功能。您可以在点播管理后台设置允许播放域名的黑白名单,降低视频被恶意盗链的风险。

在管理后台设置域名黑白名单

  1. 登录云点播管理后台,点击 【设置】【播放域名设置】,进入域名黑白名单的设置界面。
  2. 根据自身的业务场景,选择域名限制的范围:

  • 如果选择“无域名限制”,则视频可以在任何网站(域名)下播放。
  • 如果设置了“禁止播放的域名”,则视频在“禁止域名(黑名单)”范围内无法播放,最多可设置5个域名。
  • 如果设置了“允许播放的域名”,则视频只允许在“允许域名(白名单)”范围内播放,最多可设置5个域名。
  • 如果选择了“复合判断”,播放器会先判断当前播放域名是否在白名单,再判断是否在黑名单。这个选项适用于允许视频在某域名下播放,但禁止其中一个子域名播放的场景。

    image-20200914144009405

通过API设置域名黑白名单

您还可以通过服务端API来查询和设置播放域名的黑白名单,详见:

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

概览

如何保障视频内容安全,防止视频被盗链、非法下载和传播,是众多企业困扰已久的问题,特别是在线教育、企业培训、财经金融等在线版权视频领域,处理不好会造成严重的经济损失或信息泄露风险。

保利威云点播提供了针对视频内容安全的多种保护机制,从产品功能、技术实现以及平台服务等多方面保障您的视频版权不受到非法侵犯。详见:保利威PlaySafe视频版权保护体系。视频介绍详见:保利威课件版权保护体系

在技术和产品功能层面保利威提供如下的视频安全保护机制:

安全机制 描述 安全级别
播放密码 可针对视频设置播放密码,观众需输入正确的密码才能播放视频
视频水印 把企业专属水印编码进视频流,让视频内带有版权信息,保护公司知识产权
播放域名黑白名单 通过设置域名黑白名单,实现视频只能在指定网站播放的效果 较低
授权播放 视频播放前播放器调用业务方的授权验证接口,实现二次鉴权
录屏/抓流监测 播放器自动检测主流浏览器或手机系统的录屏/抓流行为,并警告终止播放 较高
防录屏跑马灯 将观众信息显示在视频上,并不规则地跑动,可追溯录屏者身份,对翻录行为起到强有力的警示作用。 较高
视频加密 采用私有加密算法和安全传输机制,提供云端一体的视频加密解决方案
安全下载 移动端(iOS/Android SDK)将加密后的视频数据缓存在本地,私钥加密存储且只有保利威播放器才可解密播放

播放密码

播放密码是一种简单的安全保护机制,为视频设置密码后,观众需输入正确的密码才可以播放视频。

使用方式参考:播放密码

视频水印

水印是在视频编码时将图片压在视频流中的,水印图片成为了视频的一部分。企业可以把专属的Logo等信息作为视频水印显示在视频画面中,以此来展示企业版权信息和品牌形象。

使用方式参考:视频水印

播放域名黑白名单

播放域名限制是在云端配置的视频资源访问策略,根据视频所在网站的域名,可配置拒绝播放视频的网站域名黑名单,或允许播放视频的网站域名白名单,以达到基本的保护目的,防止被恶意盗链播放。

使用方式参考:播放域名设置

授权播放和防录屏跑马灯

在用户网站中,除了登录验证外,还可以通过在云点播管理后台设置授权验证接口,播放器会调用该接口去验证观众是否有播放某一个视频的权限,从而实现对观众的二次鉴权。

另外该接口还可以通过返回跑马灯的内容和样式信息,在视频播放过程中,使观众信息在视频上不规则滚动,以此来警示盗版者,达到视频版权保护的效果。

使用方式参考:授权播放和跑马灯

录屏/抓流检测

部分浏览器(比如360浏览器)以及浏览器插件带有录屏或抓取视频流并下载的功能,保利威播放器会主动监测录屏或抓流行为,一旦发现观众开启了录屏功能或抓流插件,视频会自动停止播放并提示。保利威Android/iOS SDK也提供防录屏功能,开启防录屏开关后,在Android系统中录制的视频画面为黑色,而在iOS系统中视频会终止播放并提示。

浏览器录屏检测的视频介绍:浏览器防录屏(视频)

视频加密

上述安全机制能够有效保障用户的合法访问,但对于付费观看场景,如果盗版者通过一次付费拿到视频播放URL,将视频下载到本地并进行二次分发,对于企业而言所造成的经济损失也是十分严重的。因此需要通过多种安全机制配合,共同保障视频内容安全,而其中最为重要的一项安全保护机制,就是视频加密。

保利威视频加密是对视频数据本身进行加密,加密后的视频即使被下载到本地,也是无法播放和二次分发的。视频加密可有效防止视频泄漏和盗链问题。

使用方式参考:保利威视频加密

安全下载(离线播放)

在移动端(iOS、Android)APP,一般会有缓存、下载到本地并离线播放的业务场景,保利威移动端SDK提供的安全下载功能可以有效保护下载到本地的视频文件,防止被拷贝后恶意播放和传播。主要优点有:

  1. 下载到本地的视频本身是加密的,只能通过保利威移动端SDK进行解密播放,拷贝后无法直接播放和二次分发。
  2. 私钥文件加密存储,有效防止被窃取。
  3. 每个视频文件都有独立的私钥,即使单个泄漏也不会影响其它视频。
  4. 所有的下载、解密、播放逻辑在SDK内部实现,用户无需额外处理,简单易集成。

使用方式参考:

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...

播放密码

播放密码是一种较简单的视频安全保护机制,为视频设置密码后,观众需输入正确的密码才可以观看视频。

使用方式为:

  1. 登录点播管理后台,点击【视频列表】,选中视频后点击【视频设置】,为视频设置密码。

    image-20200914112710438

  2. 观众需输入正确的密码才可观看视频。

    image-20200911172710933

您还可以通过服务端API来查询和修改视频的播放密码:

以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...