0
点赞
收藏
分享

微信扫一扫

flask基于保利威做视频认证

三分梦_0bc3 2022-01-20 阅读 59

实现步骤

仅实现视频认证,视频跑马灯不在考虑范围,请自行阅读官方文档:保利威官方文档。

一、管理后台设置

  1. 登录云点播管理后台,点击 【设置】 → 【视频设置】,进入视频设置页面。

  2. 在授权播放和防录屏跑马灯接口设置栏中,填写认证接口路由。

  3. http://127.0.0.1:5000/video/verfy/示例:
    在这里插入图片描述

二、业务方服务端实现

  1. 从官网直接拷这段代码,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'  // 用户可自定义参数值,也可以不设置此参数,那么在请求接口时该参数值为空。参数值为中文时需要做base64URLSafe。
    });
    </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')
    
  2. 返回数据

    {
      "status":1, // status为1则认证通过,为0则认证不通过
      "username":"elvis", //username为你的业务的用户,可以随便写一个
      "sign":"2c2bfb00314da7d768d50a7d1e93bd9f" //认证值
    }
    
  3. 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())
    
  4. Flash播放器的跨域配置
    配置方式为:添加crossdomain.xml文件到播放域名的根目录下。

    <?xml version="1.0" encoding="UTF-8"?>
    <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')
    
  5. 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/观众名称,也会用于跑马灯显示的文字内容。如果是中文需要做URLEncode
signString/接口签名,用于校验返回内容是否被篡改
showStringoff当参数值为“on”时表示显示跑马灯,默认不显示
settingInteger1跑马灯滚动的样式:1 从右到左滚动 2 随机位置闪烁 3 从右到左闪烁滚动
speedInteger200跑马灯文字从右侧移至左侧所需时间,单位:1/10秒
lifeTimeInteger3跑马灯文字显示时间,单位:秒
intervalInteger5跑马灯文字隐藏间隔时间,单位:秒
tweenTimeInteger1跑马灯文字渐隐渐现时间,单位:秒
fontSizeInteger30跑马灯文字的字体大小
fontColorString0x000000跑马灯文字颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
alphaFloat1跑马灯文字透明度,取值范围0.01~1,参数值不能小于0.01
filterStringoff跑马灯文字是否描边,on 描边 off 不描边
filterAlphaFloat1文字描边透明度,取值范围0~1
filterColorString0x000000文字描边颜色,使用十六进制颜色值表示,如0xFF0000,默认为黑色
strengthInteger4描边强度,取值范围0~255
blurXInteger2描边水平模糊量,取值范围0~255
blurYInteger2描边垂直模糊量,取值范围0~255
msgString/自定义错误提示信息
举报

相关推荐

0 条评论