实现步骤
仅实现视频认证,视频跑马灯不在考虑范围,请自行阅读官方文档:保利威官方文档。
一、管理后台设置
- 登录云点播管理后台,点击 【设置】 → 【视频设置】,进入视频设置页面。
- 在授权播放和防录屏跑马灯接口设置栏中,填写认证接口路由。
- 以
http://127.0.0.1:5000/video/verfy/
示例:
; 二、业务方服务端实现
- 从官网直接拷这段代码,vid是上传的视频的id,刷新网页就会将这些数据发到咱们自己后端的认证接口。
<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'
});
</script>
@app.route('/video/verfy/')
def auth():
query_params = request.args
t = query_params.get('t')
vid = query_params.get('vid')
code = query_params.get('code')
callback = query_params.get('callback')
- 返回数据
{
"status":1, // status为1则认证通过,为0则认证不通过
"username":"elvis", //username为你的业务的用户,可以随便写一个
"sign":"2c2bfb00314da7d768d50a7d1e93bd9f" //认证值
}
- sign的生成 sign的计算规则为:拼接vid、secretkey、username、code、status、t参数做MD5计算:
sign = str(md5(f"vid={vid}&secretkey={secretkey}&username=general_zy&code={code}&status={1}&t={t}".encode(
'utf-8')).hexdigest())
- Flash播放器的跨域配置
配置方式为:添加crossdomain.xml文件到播放域名的根目录下。
<cross-domain-policy>
<allow-access-from domain="*"/>
<allow-http-request-headers-from domain="*" headers="*" secure="false"/>
cross-domain-policy>
只需要把这段内容返回就行:
@app.route('/crossdomain.xml&')
def crossdomain():
return render_template('crossdomain.xml')
- callback的用途
以上操作之后,视频并不能播放,而callback参数也一直没有使用:
加上callback参数:
res = {
'status': 1,
'username': 'general_zy',
'sign': sign
}
if callback:
data = f'{callback}({dumps(res)})'
return data
else:
return jsonify(res)
三、官网给出的详细返回数据
{
"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"
}
四、接口参数说明
参数名类型必填默认值说明statusInteger是/是否允许播放:1 允许 2 禁止usernameString是/观众名称,也会用于跑马灯显示的文字内容。如果是中文需要做URLEncodesignString是/接口签名,用于校验返回内容是否被篡改showString是off当参数值为”on”时表示显示跑马灯,默认不显示settingInteger是1跑马灯滚动的样式:1 从右到左滚动 2 随机位置闪烁 3 从右到左闪烁滚动speedInteger是200跑马灯文字从右侧移至左侧所需时间,单位:1/10秒lifeTimeInteger是3跑马灯文字显示时间,单位:秒intervalInteger是5跑马灯文字隐藏间隔时间,单位:秒tweenTimeInteger是1跑马灯文字渐隐渐现时间,单位:秒fontSizeInteger是30跑马灯文字的字体大小fontColorString是0x000000跑马灯文字颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色alphaFloat是1跑马灯文字透明度,取值范围0.01~1,参数值不能小于0.01filterString是off跑马灯文字是否描边,on 描边 off 不描边filterAlphaFloat是1文字描边透明度,取值范围0~1filterColorString是0x000000文字描边颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色strengthInteger是4描边强度,取值范围0~255blurXInteger是2描边水平模糊量,取值范围0~255blurYInteger是2描边垂直模糊量,取值范围0~255msgString是/自定义错误提示信息
五、接口参数说明
传参时,code参数是自定义的,可以写当前用户的id,这样后台就可以基于id做判断,如果当前用户付费了就可以观看。
以下为模拟代码:
@app.route('/video/verfy/')
def auth():
query_params = request.args
t = query_params.get('t')
vid = query_params.get('vid')
code = query_params.get('code')
callback = query_params.get('callback')
secretkey = '请填写你的secretkey'
sign = str(md5(f"vid={vid}&secretkey={secretkey}&username=general_zy&code={code}&status={1}&t={t}".encode(
'utf-8')).hexdigest())
allow = False
if allow:
res = {
'status': 1,
'username': 'general_zy',
'sign': sign
}
if callback:
data = f'{callback}({dumps(res)})'
return data
else:
return jsonify(res)
else:
res = {
'status': 2,
'username': 'general_zy',
'sign': sign,
}
if callback:
data = f'{callback}({dumps(res)})'
return data
else:
return jsonify(res)
Original: https://blog.csdn.net/General_zy/article/details/122589155
Author: General_zy
Title: flask基于保利威做视频认证
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/747506/
转载文章受原作者版权保护。转载请注明原作者出处!