# Wechat-video
**Repository Path**: sallypanda/wechat-video
## Basic Information
- **Project Name**: Wechat-video
- **Description**: 主要应用于微信环境下的安卓,ios,或pc端,可以实现任意尺寸的全屏播放或局部播放,并可以在视频上叠加任意的交互元素(例如图片,画布或普通DOM元素等)。
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 5
- **Forks**: 0
- **Created**: 2017-05-01
- **Last Updated**: 2020-12-19
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
#轻量级的微信全屏视频播放类
主要应用场景为现在微信上流行的视频类H5。
**点击查看[在线demo](http://sallypanda.oschina.io/wechat-video/)**
##使用说明:
1. 初始化
```html
```
**代码说明:**
```html
/**
* 视频类构造器
* @param parentDom 视频初始化所在的父元素
* @param url 视频地址
* @param fixMode 暂时只有三种适配选择,1,宽自适应 2,高自适应 3,自由模式(自定义宽度,高度等比例缩放,但移动端不适用)
* @param width 视频播放器宽度
* @param height 视频播放器高度
* @constructor
*/
function VideoClass(parentDom,url,fixMode,width,height)
```
2. 播放
```javascript
videoObj.play();
```
**代码说明**
```javascript
/**
* 播放
*/
/**
* @param playEndCallback 播放完毕回调
* @param loadedCallback 加载完成后的回调
*/
VideoClass.prototype.play = function(playEndCallback,loadedCallback)
```
3. 暂停
```javascript
videoObj.pause();
```
4. 停止
```javascript
videoObj.stop();
```
5. 获取视频时长
```javascript
videoObj.getFormatTime();
```
##对外可访问属性
1. 视频的链接
```javascript
videoObj.url
```
2. 视频的状态
```javascript
videoObj.status
```
3. 视频的时长
```javascript
videoObj.duration
```
需要在播放后才能正确获取,安卓同样是不支持的😁
##开启DEBUG模式
```
引入vconsole.min.js
开启debug模式
videoObj.debug = true; //开启调试模式
```
在ios设备上可以查看下载进度、视频总时长和视频状态变化(也只有ios和PC端支持)
##说说遇到的坑
1. video.duration,必须在canplay侦听事件里获取,或者在定时器里判断readyState>2的时候获取才行,其余地方会有问题(例如NaN,或获取失败),安卓没办法获取。
2. 如果本地局域网测试视频,还要注意的就是ios和安卓手机上貌似不支持局域网的相对地址和绝对地址(例如192.168.199.20/test.mp4),会播放不了,但在电脑上,或线上测试,是正常的。呵呵!
3. 关于video.[readyState说明](https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/readyState),简单讲就是,0没有任何数据,1获取到基本视频信息,2当前位置的数据加载好了,3除了当前位置,还把后面的数据也加载了(也就是缓冲了一部分,减少卡顿的情况),4,完全加载(虽然视频不卡了,但很久啊兄弟),但后来发现并不靠谱,各大厂商暂时没有依照标准来做,所以大部分情况下,只要视频创建出来,则readyState就为4了。
4. 除了ios可以做到计算加载百分比,安卓没办法获取到视频时长和缓冲位置,而PC必须边播放边下载没办法做预加载,所以结论就是视频没办法做预加载!!!!!
##参考资料
[移动端HTML5