移动端视频的小程序加密

1.概述

  移动端视频的小程序加密播放设置开启后,通过下文设置步骤,视频播放请求m3u8可以在APP、小程序内正常播放。
  POLYV云平台接收到参数后会对token、iswxa参数进行校验。若校验通过,返回正确的解密密钥key文件链接给客户端。反之,非法访问key,则会响应403错误状态。不允许播放。

2.如何开启

【POLYV后台】—— 【设置】—— 【加密设置】进行如下设置:

3.快速开始

参考小程序播放sdk下载页面调用基础播放器后,需额外添加小程序授权播放wxApp参数,如下图:

参数解析:

参数名 说明 是否必填
wxAppUrl 服务端php示例url
isWx 判断是否微信授权
wxUserId 小程序用户id,可以是小程序openid
expires 请求token视频播放有效时间

ps:请注意修改示例php中$secretkey、$uid(可在后台---设置---API接口窗口中查阅)变量为当前播放视频账号正确的数值。

4."小程序授权"过程原理

小程序播放视频m3u8Url时需要带上从服务器校验获取正确的token、iswxa参数,才能正常访问key来播放视频。

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

移动端视频的加密级别

当用户上传视频到POLYV云平台之后,POLYV云平台会根据用户POLYV账号的加密设置(加密功能需要教育版及以上套餐才有或另外单独购买),对视频进行加密或非加密的转码处理。用户在移动端播放的是转码处理后的视频,由POLYV云平台对用户的源视频进行转码输出。如果设置了加密,则转码输出m3u8文件。如果没有设置加密,则转码输出mp4文件。

一、解密密钥的【非加密授权】(不推荐)

在POLYV后台默认设置如下,当解密密钥key的权限设置为“非加密授权”时,直接在页面上引用POLYV默认的多终端代码就可以在移动端WEB网页上播放视频。POLYV云平台将key直接通过http传输给移动端的WEB浏览器,移动端WEB浏览器不受任何限制,直接拿到key去解密并播放视频,此时key直接被暴露,不受保护。PC端播放加密视频,只需在【设置】——【加密设置】中勾选如下图所示的设置,以后上传的视频,POLYV云平台都会转码输出加密视频,用户只需要在网站页面引用POLYV的播放代码就能播放视频,无需进行其他设置。

加密设置222

二、解密密钥的【WEB授权】

当解密密钥key的权限设置为“WEB授权”时,key的权限则包括“WEB授权”和“APP授权”共2个权限。只要按照文档说明编写代码,即可在移动端WEB网页和集成了POLYV Android 或 iOS sdk的APP上,将校验参数发送到POLYV云平台,校验通过则获取合法的key,从而解密播放视频。解密密钥的“WEB授权”原理的详细描述,请点击移动端视频的WEB加密

设置【WEB授权】虽然有更多的播放选择,可以在移动端网页上播放,但加密强度弱于【APP授权】。如果希望视频文件的加密安全得到更好的保障,通常推荐移动端加密使用【APP授权】。

三、解密密钥的【APP授权】(推荐)

当解密密钥key的权限设置为“APP授权”时,解密密钥的权限仅有“APP授权”这一个权限,移动端WEB网页将无法播放视频。只要按照文档说明,在用户的Android或iOS原生开发的APP上,集成POLYV Android 或 iOS sdk,通过调用sdk里面的方法向POLYV云平台发送请求,校验通过则获取加密过后的key,再通过sdk本地的解密算法,解密获取到真实的key,从而通过真实的key解密播放视频。解密密钥的“APP授权”原理的详细描述,请点击移动端视频的APP加密

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

移动端视频的WEB加密

一、首先在【POLYV后台】——【设置】——【加密设置】进行如下设置:

二、保存好以上设置之后,还需要在页面的播放代码中添加ts和sign参数。当移动端WEB浏览器请求m3u8时,会在m3u8地址后面附带ts和sign参数,POLYV云平台接收到参数后会对ts和sign参数进行校验。若校验通过,返回正确的解密密钥key文件链接给客户端。反之,非法访问key,则会响应400错误状态。
三、PHP为示例代码

参数说明:

  • $secretkey (为账号secretkey,可在后台---设置---API接口窗口中查阅)
  • $vid (为视频ID,可在视频列表中查找)
  • $ts = time()*1000; (ts参数为13位的毫秒级时间戳或者用10位的秒级时间戳,后面加多3个0)
  • $sign = md5($secretkey.$vid.$ts); (sign参数为secretkey、vid、ts的值按顺序拼凑起来的字符串进行MD5计算得到的结果)
<?php
$vid = "e2e84a738354402a52ce81aeab4e3067_e";
$secretkey= "7UagtQOq2A";
$ts=time()*1000;  //10位的秒级时间戳,后面加多3个0,最后为13位的数值

$hash = md5($secretkey.$vid.$ts);
?>

<script src='https://player.polyv.net/script/polyvplayer.min.js'></script>
<div id='plv_e2e84a738354402a52ce81aeab4e3067_e'></div>
<script>
var player = polyvObject('#plv_e2e84a738354402a52ce81aeab4e3067_e').videoPlayer({
    'width':'600',
    'height':'485',
    'vid' : 'e2e84a738354402a52ce81aeab4e3067_e',
    'ts':'<?php echo $ts; ?>',
    'sign':'<?php echo $hash; ?>'
});
</script>

由于移动端WEB是通过HTML5的video标签调用手机系统的原生播放器去播放视频,需要将解密密钥key通过http传输给手机系统的原生播放器。当key的权限为“开放授权”时,key永久生效,无需带上时间戳ts和签名sign去访问。当key的权限为“WEB授权”时,则需要带上时间戳ts和签名sign,才能正确访问到key。web加密的ts和sign是一次有效性的

与移动端WEB网页不同的是,PC端WEB网页播放加密视频时,无需通过http去传输key,在播放的过程中,POLYV的Flash播放器会调用播放器内部的解密算法,去解密播放加密视频,无需担心key传输和暴露的问题。

设置【WEB授权】虽然有更多的播放选择,可以在移动端网页上播放,但加密强度弱于【APP授权】。如果希望视频文件的加密安全得到更好的保障,通常推荐移动端加密使用【APP授权】。

四、解密密钥的“WEB授权”过程原理,如下图所示:

绘图2

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

移动端视频的APP加密(推荐)

首先在“POLYV后台”——“设置”——“加密设置”中设置:

13
除此之外,还需要集成保利威视的iOS或Android的sdk。当解密密钥的权限设置为“APP授权”时,移动端WEB网页将无法播放视频。当sdk请求m3u8时,会在m3u8地址后面附带与POLYV云平台约定好的ts和sign参数。(这里的ts和sign跟解密密钥的权限设置为“WEB授权”时所要添加的ts和sign生成规则不一样,sdk是用另一个封装起来的生成规则,对用户不可见。)ts和sign校验通过后,POLYV云平台在解密密钥key的传输之前先对key进行加密,然后再通过http传输加密过后的key给sdk客户端,可以阻止key被破解。 sdk获取到加密过后的key之后,使用内部封装好的解密算法对key解密,从而获取到真实的key去解密并播放视频。用户只需要调用sdk的播放器以及简单函数就可以播放视频,不需要理会key的签名校验和视频解密的过程。

以下代码演示如何使用iOS sdk的代码播放加密视频:

#import "MPMoviePlayerController+plv.h"
...
//播放自适应码率视频
self.videoPlayer = [[MPMoviePlayerController alloc]initWithVid:_vid];

//播放指定码率的视频
 self.videoPlayer = [[MPMoviePlayerController alloc]initWithVid:vid level:1];

解密密钥的“APP授权”过程原理,如下图所示。由下图可以看出,当解密密钥key的权限设置为“APP授权”是,比“WEB授权”多了一层POLYV云平台对key的加密,安全级别更高。

sdk

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

授权播放和跑马灯

在用户网站中,除了可以通过session、cookie判断学员是否有权限访问网站上的某些视频页面之外,还可以通过POLYV播放器去实现学员权限验证播放的功能,从而实现了对学员权限的双重验证。首先需要开发者开发一个能输出以下示例中json参数的http协议接口(如,http://www.mywebsite.com/validate.php),然后把接口URL配置到POLYV后台(如下图)。

自动补全

接口URL的配置适配以下几种情况:
1. 直接请求URL,例如:http://mywebsite.com/interface/validate.php。
2. 自动补全协议,例如://mywebsite.com/interface/validate.php 调用时会补全当前页面的请求协议,实际请求的地址是http://mywebsite.com/interface/validate.php 或 https://mywebsite.com/interface/validate.php。
3. 补全协议和HOST,例如:/interface/validate.php或者interface/validate.php,调用时会补全当前页面的请求协议和HOST,所以实际请求的地址是http://mywebsite.com/interface/validate.php。

授权

如果只实现授权播放功能,则只需输出status、username、sign这3个参数给POLYV验证即可,以下为用户接口的返回示例:

PC端flash播放器请求用户接口时的返回示例:

{
    "status":1,
    "username":"elvis",
    "sign":"2c2bfb00314da7d768d50a7d1e93bd9f"
}

移动端js请求用户接口时的返回示例(POLYV请求接口时,会提交callback参数):

polyvObject16208229674372271079_1478765178186({
"status":1,
"username":"elvis",
"sign":"1cca74bd55c6076091ed84807065e5b7"
})

此时sign的计算规则为:将以下参数的值拼凑起来的字符串做MD5计算。

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

授权跑马灯

除了授权播放功能,还需要实现跑马灯功能的,则输出示例中其他跑马灯相关的参数,PC端flash播放器请求用户接口时的返回示例:

{
    "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"
}

此时sign的计算规则为:将以下参数的值拼凑起来的字符串做MD5计算。
如果需使用跑马灯功能,则必须用这种签名方式,否则会存在跑马灯被篡改的风险。

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

参数解释:

序号 参数名 代表意义 参数可选 参数类型 是否必需项 默认值
1 status 是否播放 1:正常播放2:禁止播放 整型
2 username 用户名,可以是学员的id,也可以是任意定义的值,也可以为空 String
3 sign 通过MD5加密算法计算得到32位小写的值 String
4 msg 自定义播放错误提示信息 String
5 fontSize 跑马灯文字字体大小 整型 30
6 fontColor 跑马灯文字字体颜色 包含三个 8 位 RGB 颜色成分的数字;例如,0x000000 为黑色 String 0x000000 黑色
7 speed 跑马灯文字移动指定像素所需时间 整型 单位:(秒/10) 200
8 filter 是否描边 “on” :描边 “off”:不描边 String off
9 setting 跑马灯样式 1:自屏幕右方至左方一直滚动2:屏幕内随机位置闪烁3:自屏幕右方至左方一直滚动,渐隐渐现 整型 1
10 alpha 跑马灯文本透明度 范围:0~1 float 1
11 filterAlpha 跑马灯描边透明度 范围:0~1 float 1
12 filterColor 跑马灯描边颜色 包含三个 8 位 RGB 颜色成分的数字;例如,0x000000 为黑色 String 0x000000 黑色
13 blurX 跑马灯描边水平模糊量 范围:0~255 整型 2
14 blurY 跑马灯描边垂直模糊量 范围:0~255 整型 2
15 interval 跑马灯文本隐藏间隔时间 整型 (单位:秒) 5
16 lifeTime 跑马灯文本显示时间 整型 (单位:秒) 3
17 tweenTime 跑马灯文本渐隐渐现时间 整型 (单位:秒) 1
18 strength 跑马灯描边强度 范围:0~255 整型 4
19 show 是否显示跑马灯,默认为否 String off

当网页调用POLYV播放器播放视频时,在PC端中,POLYV通过GET请求用户的http协议接口并提交vid、code、t这3个参数(如,http://www.mywebsite.com/validate.php?vid=e8888b74d19fe43983170b7cf804444d_e&code=abc&t=143020010115550947);而在移动端中,由于js通过ajax方式去请求用户的接口,需要跨域请求,因此需要加多一个callback参数,POLYV通过GET请求用户接口并提交vid、code、t、callback这4个参数(如,http://www.mywebsite.com/validate.php?vid=e2e84a73837363106d8d257f60e55c4c_e&code=&t=1457938821973&
callback=polyvObject16209048491895664483_1457938783908&_=1457938784101)

其中code为播放代码中的参数,值为自定义(如下所示,可以不在播放代码中添加此参数,则该参数的值默认为空);t为播放器产生的随机数。需要用最新的js链接:https://player.polyv.net/script/polyvplayer.min.js,以前旧版的js不支持。

示例代码:

<script src='https://player.polyv.net/script/polyvplayer.min.js'></script>
<div id='player'></div>
<script>
var player = polyvObject('#player').videoPlayer({
    'width':'600',
    'height':'373',
    'vid' : 'e8888b74d19fe43983170b7cf804444d_e',
    'code' : 'myRandomCodeValue'
});
</script>

同时,为了让PC端的Flash能够跨域请求用户接口,还需要用户在自己的网站域名根目录下增加crossdomain.xml文件。

<cross-domain-policy>
<allow-access-from domain="*.polyv.net"/>
</cross-domain-policy>

最后POLYV播放器就能接收用户的http协议接口返回的json数据,从而根据参数的值去进行相应的播放操作。

授权播放功能接口主要的播放操作是:授权播放,即判断是否允许播放。

当status参数的值为1时,POLYV播放器会主动验证sign的合法性。若合法,则允许播放;若不合法,则禁止播放。当视频允许播放时,show的值为on表示显示跑马灯,off表示不显示跑马灯。

当status参数的值为2时,POLYV播放器直接禁止播放视频。

用户的http协议接口(如,http://www.mywebsite.com/validate.php)代码示例:

<?php
$username = "elvis";
$secretkey = "tIQp4ATe9Z";
$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 = '';
}
if($callback!=''){
 $sign=md5("vid=$vid&secretkey=$secretkey&username=$username&code=$code&status=$status&t=$t");
 $array=Array("status"=>$status,"username"=>$username,"sign"=>$sign);
 //若需要在PC端h5播放器中显示跑马灯,则$array改为:
 //$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);
 echo $callback."(".$Json.")";
} else{
 $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);
 echo $Json;
}
?>

注:
1.接口返回的数据,请确保是UTF-8编码的;注意json数据中的status参数是整型的,不能是字符串!用户开发的接口地址的相应域名下需有crossdomain.xml,需至少包含:<allow-access-from domain=".polyv.net"/>,建议设为:<allow-access-from domain=""/>。目前跑马灯需要通过PC端flash或H5播放器来实现,移动端网页暂不支持。
2.若需要在PC端h5播放器中显示跑马灯,则移动端的$array改为(callback不为空时):
$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,);

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

播放域名设置(防盗链)

播放域名设置(防盗链):顶部右侧功能列表的设置下拉菜单中点击“播放域名设置”,进入如下图界面。

QQ图片20160603140623

 

在上图的界面中进行 选择您所需设置的域名限制,设置完成后点击最下方的“提交”按钮即可,如下图:

QQ图片20160606171801

设置无域名限制:当设置了无域名限制,所有域名均可播放。
设置禁止域名限制:当设置了禁止域名播放,除了当前禁止播放的域名不能播放外,其他域名均可播放。(禁止域名最多5个,可扩充)
设置允许域名限制:当设置了允许域名播放,除了当前允许播放的域名能播放外,其他域名均不可播放。(允许域名最多5个,可扩充)

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

视频加密(防下载)

视频加密保利威视的视频加密功能,是受国家知识产权保护的专利技术,能最大程度上对视频的版权起到防下载的作用。
加密方法:顶部功能列表右侧的“设置”—点击“加密设置”,进入如下图界面,勾选“视频加密设置”,点击下方的“提交”即可。
QQ图片20160607180742
注:
1、勾选该选项后,只对新上传的视频有效,即对新上传的视频加密,在此操作之前上传的视频不会加密。
2、经过保利威视管理后台加密设置之后,只能通过保利威视(polyv)的播放器才能播放,其他播放器则不能播放。点击下载该视频后,并使用其它播放器打开视频,则可发现该加密视频不能正常播放。
3、加密视频可有效防止视频被盗用,破解难度高,加密程序为保利威视(polyv)自有知识产权。
以上内容是否对您有帮助?根本没有帮助文档较差文档一般文档不错文档很好
Loading...