授权播放和跑马灯

在用户网站中,除了可以通过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...