不分框架的前端视频组件封装

175 阅读1分钟

一、需求概述

需要满足不同框架下都适用的视频组件

二、真实项目情况

多个项目,vue版本不同,UI框架不同,视频插件不同

三、实现分析

1.vue版本不同

解决方案:独立鱼框架之外,使用js实现

2.UI框架不同

解决方案:不必过于考虑UI框架,视频样式在vue组件中编写

3.视频插件不同(主要为EasyGbs与flv.js)

解决方案:由于业务场景不同,所选用的插件无法强制替换,因此需要兼顾两者,判断当前系统所引用的插件类型,选择对应的播放配置参数与调用方式

四、代码实现

image.png

  • 定义一个VideoIsp的类,构造器中包含四个实例属性,分别是pluginType:插件类型、configs(easy-player配置参数)、flvConfigs(flv配置参数)、flvPlayer(flv实例) 因为项目需要,默认使用easy-player插件。
  • 以easy-player为例进行解读:
init:

根据调用时传入的插件类型,匹配对应的实例方法进行视频组件初始化

  init(args = {}) {
    switch (this.pluginType) {
      case 'easyplayer':
        this.createEasyPlayer(args)
        break
      case 'flv':
        this.createFlvPlayer(args)
        break
      default:
        this.createEasyPlayer(args)
    }
  }
createEasyPlayerTemplate:

创建easy-player容器,将获取到的配置项当做属性赋给DOM元素

createEasyPlayer:

获取配置项,渲染模板

五、源代码

image.png

欢迎各位大佬批评指正