flask基于保利威做视频认证

实现步骤

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

一、管理后台设置

  1. 登录云点播管理后台,点击 【设置】 → 【视频设置】,进入视频设置页面。
  2. 在授权播放和防录屏跑马灯接口设置栏中,填写认证接口路由。
  3. http://127.0.0.1:5000/video/verfy/示例:
    flask基于保利威做视频认证

; 二、业务方服务端实现

  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'
});
</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')
  1. 返回数据
{
  "status":1, // status为1则认证通过,为0则认证不通过
  "username":"elvis", //username为你的业务的用户,可以随便写一个
  "sign":"2c2bfb00314da7d768d50a7d1e93bd9f" //认证值
}
  1. 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())
  1. 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')
  1. 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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • GO编译时避免引入外部动态库的解决方法

    最近碰到一个问题,有一个流量采集的组件中使用到了github.com/google/gopacket 这个库,这个库使用一切正常,但是唯独有一个缺点,编译后的二进制文件依赖于lib…

    Python 2023年10月18日
    035
  • python画图不显示y轴_python – 如何强制matplotlib只显示Y轴上的整数

    我可视化的数据只有在整数时才有意义. 即在我正在分析的信息的上下文中,0.2的记录没有意义. 如何强制matplotlib仅使用Y轴上的整数.即1,100,5等?不是0.1,0.2…

    Python 2023年9月5日
    056
  • Python中OpenCV库(二)

    OpenCV库(二) 五、 图像直方图 1、 基本概念 2、 统计函数 3、绘制直方图 3.1 matplotlib 3.2 OpenCV 4、 使用掩膜的直方图 六、 视频采集 …

    Python 2023年6月9日
    084
  • pandas索引器loc和iloc

    DataFrame是pandas两种数据类型之一(另一种是Series),日常使用最多的也是它。DataFrame是一张二维表,使用的时候要知道如何定位元素,loc和iloc是就是…

    Python 2023年8月7日
    052
  • 新手教程:使用Pycharm的本地conda环境运行程序

    一.新建Projects并利用conda新建环境 点击File的New Project选项 1.这里的第一个location代表的是工程文件储存的位置,我将所有的pycharm文件…

    Python 2023年9月7日
    0370
  • scrapy常用问题

    1、动态加载又对及时性要求很高怎么处理?1,selenium+Phantomjs2,尽量不适用sleep而是用WebDriverWait 2、分布式爬虫主要解决什么问题?1,ip …

    Python 2023年10月5日
    026
  • 面板数据熵值法-Python

    面板数据数据熵值法公式-基于Python 更新时间:2022年11月9日更新内容:已解决运行代码时出现下述问题: ; 一、理论基础 本文通过王晓红等(2021)中所使用到的面板数据…

    Python 2023年8月7日
    050
  • 强化学习-学习笔记13 | 多智能体强化学习

    这一篇介绍重头戏:多智能体强化学习。多智能体要比之前的单智能体复杂很多。但也更有意思。 13. Multi-Agent-Reiforcement-Learning 13.1 多智能…

    Python 2023年10月25日
    056
  • shell命令(一)

    什么是shell? Shell是一个应用程序,它连接了用户和Linux内核,让用户能够更加高效、安全、低成本地使用Linux内核,这就是Shell的本质。 shell与Linux系…

    Python 2023年6月10日
    080
  • 使用Docker安装FastDFS

    1. 获取镜像 可以利用已有的FastDFS Docker镜像来运行FastDFS。 获取镜像可以通过下载: sudo docker image pull delron/fastd…

    Python 2023年6月11日
    044
  • Python常用库的使用(Numpy,Pandas,Matplotlib,wordcloud,Opencv-python,PIL)

    一、前言 最近做python实验的时候,重点考察了对题述的库的使用,经过一段时间学习,将其汇总至一处,方便取用。 二、Numpy库 首先安装numpy库,只需要在cmd窗口输入pi…

    Python 2023年9月1日
    049
  • Python数据可视化、五

    一、绘制固定区域子图matplotlib可以将整个画布规划成等分布局的mn(行列)的矩阵区域,并按照先行后列的·方式对每个区域进行编号(编号从1开始),之后在选中的某个区域或某些区…

    Python 2023年9月3日
    060
  • 你不知道的Python字符串速查表

    Original: https://www.cnblogs.com/123456feng/p/16174362.htmlAuthor: 蚂蚁ailingTitle: 你不知道的Py…

    Python 2023年5月24日
    047
  • Django笔记3–GET、POST请求的数据交互

    通过前面的学习,创建好了django项目”myweb”,以及项目应用”myapp”,并通过浏览器能访问不同视图。下面为客户端浏览器通…

    Python 2023年8月5日
    048
  • Python 错误和异常

    程序中的错误一般被称为 Bug,无可否认,这几乎总是程序员的错。。。 程序员的一生总是伴随着一件事–调试(错误检测、异常处理)。一次又一次,最可怕的事情是:不仅是你自己…

    Python 2023年5月24日
    069
  • scrapy_爬取天气并导出csv

    爬取xxx天气 爬取网址:https://tianqi.2345.com/today-60038.htm 安装 pip install scrapy 我使用的版本是scrapy 2…

    Python 2023年10月1日
    029
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球