# VAP 

[![License](https://img.shields.io/badge/license-MIT-blue.svg?style=flat)](http://opensource.org/licenses/MIT)


## 简介
VAP是企鹅电竞实现融合礼物特效的组件，将图片/文字与原始mp4视频融合在一起，支持透明度，项目详细介绍请参考 [VAP](https://github.com/Tencent/vap)

### 一、使用(参考demo) 🔧

1、安装
``` bash
npm i video-animation-player
```

2、创建实例
``` bash
import Vap from 'video-animation-player'
# init
let vap = new Vap(options)
```

3、实例方法
``` bash
# 实例方法
1、on(): 绑定h5 video事件或者自定义事件(frame： 接收当前帧和播放时间戳)  如on('playering', function() {// do some thing})
2、destroy()：销毁实例，清除video、canvas等
3、pause()：暂停播放
4、play()：继续播放
5、setTime(s)：设置播放时间点(单位秒)
```

4、实例参数

参数名 | 含义 | 默认值
---- | ---  | ---
container | dom容器 | null
src |  mp4视频地址 | ''
config | 配置json对象（详情见下文）| ''
width | 宽度 | 375
height | 高度 | 375
fps | 动画帧数（生成素材时在工具中填写的fps值） | 20
mute | 是否对视频静音 | false
loop | 是否循环播放 | false
type | 组件基于type字段做了实例化缓存，不同的VAP实例应该使用不同的type值（如0、1、2等）| undefined
beginPoint | 起始播放时间点(单位秒),在一些浏览器中可能无效 | 0
fontStyle | 融合字体样式[用法参考](https://github.com/Tencent/vap/pull/101) | ''
accurate | 是否启用精准模式（使用requestVideoFrameCallback提升融合效果，浏览器不兼容时自动降级） | false
precache | 是否预加载视频资源（默认关闭，即边下边播） | false
onDestory | 组件销毁时回调 | undefined
onLoadError | 加载失败回调 | undefined
ext（无固定名） | 融合参数（和json配置文件中保持一致）| ''

注意：默认字体大小是根据文字个数动态变化的，会保证文字全部展示出来，如果通过**fontStyle**参数设置字体大小后，可能出现文字展示不全的现象

### 二、素材
内容格式固定，使用VAP素材生成工具生成

### 三、实现原理

使用webgl texture获取video和图片/文字的纹理，并在shader中进行自定义融合，




