多语言展示
当前在线:1444今日阅读:183今日分享:19

视频防盗:授权播放+跑马灯

在用户网站中,除了可以通过session、cookie判断学员是否有权限访问网站上的某些视频页面之外,还可以通过POLYV播放器去实现学员权限验证播放的功能,从而实现了对学员权限的双重验证。
工具/原料
1

云视频后台

2

自建网站

3

代码编辑工具

方法/步骤
1

首先需要开发者开发一个能输出以下示例中json参数的http协议接口,然后把接口URL配置到POLYV后台(如下图)。

2

JSON示例(授权播放只需要输出status、username、sign这3个参数给POLYV验证即可,若需要在PC端的POLYV Flash播放器中显示跑马灯,还需要输出示例中其他跑马灯相关的参数):PC端请求用户接口时的返回示例:{'status':1,'username':'test','sign':'a9b6fa726ccd2a75c6d0f9d3bfb81bee','msg':'Error message!','fontSize':18,'fontColor':'0xffffff','speed':200,'filter':'on','setting':2,'alpha':0.5,'filterAlpha':1,'filterColor':'0x000000','blurX':2,'blurY':2,'interval':5,'lifeTime':3,'tweenTime':1,'strength':4,'show':'on'}

3

移动端请求用户接口时的返回示例(POLYV请求接口时,会提交callback参数):polyvObject895664483_08({'status':1,'username':'legal user','sign':'240f4153cd32a1c8654055bd51c8ad4c'})

4

参数解释:

5

当网页调用POLYV播放器播放视频时,在PC端中,POLYV通过GET请求用户的http协议接口并提交vid、code、t这3个参数;而在移动端中,由于js通过ajax方式去请求用户的接口,需要跨域请求,因此需要加多一个callback参数,POLYV通过GET请求用户接口并提交vid、code、t、callback这4个参数。其中code为播放代码中的参数,值为自定义(如下所示,可以不在播放代码中添加此参数,则该参数的值默认为空);t为播放器产生的随机数。需要用最新的js链接:https://player.polyv.net/script/polyvplayer.min.js,以前旧版的js不支持。

6

sign的计算规则为:将以下参数的值拼凑起来的字符串做MD5计算。Plain = “vid=” + vid + “&secretkey=” + secretkey +“&username=” + username + “&code=” + code + ”&status=” + status + “&t=” + t;sign = MD5.hash(Plain);例如:当vid=e8888b74d19fe43983170b7cf804444d_e,secretkey=0toiC9qmQA,username=test,code=abc,status=1,t=5550947时,拼凑起来去MD5计算的字符串为vid=e8888b74d19fe43983170b7cf804444d_e&secretkey=0toiC9qmQA&username=test&code=abc&status=1&t=5550947则sign为MD5计算后32位小写的值:a9b6fa726ccd2a75c6d0f9d3bfb81bee

7

参与MD5计算的各参数说明:

8

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

9

最后POLYV播放器就能接收用户的http协议接口返回的json数据,从而根据参数的值去进行相应的播放操作。授权播放功能接口主要的播放操作是:授权播放,即判断是否允许播放。当status参数的值为1时,POLYV播放器会主动验证sign的合法性。若合法,则允许播放;若不合法,则禁止播放。当视频允许播放时,show的值为on表示显示跑马灯,off表示不显示跑马灯。当status参数的值为2时,POLYV播放器直接禁止播放视频。用户的http协议接口代码示例:$status,'username'=>$username,'sign'=>$sign);$validateJson = json_encode($array); if($callback != ''){    echo $callback.'('.$validateJson.')';  } else{    echo $validateJson;}?>

注意事项

(注:接口返回的数据,请确保是UTF-8编码的;注意json数据中的status参数是整型的,不能是字符串!用户开发的接口地址的相应域名下需有crossdomain.xml,需至少包含:,建议设为:。目前跑马灯需要通过flash来实现,移动端网页暂不支持。)

推荐信息