API
player是播放器的实例对象。
let player=new Player({
id:'mse',
url:'/mp4/'
})
属性
属性名 | 含义 |
---|---|
hasStart | 是否开始播放 |
autoplay | 设置/返回 自动播放属性 |
paused | 是否处于暂停状态 |
buffered | 返回当前缓冲的TimeRange对象集合 |
crossOrigin | 设置/返回是否跨域 |
currentSrc | 设置/返回视频播放地址 |
currentTime | 设置/返回视频当前播放时间 |
defaultMuted | 设置/返回视频默认静音 |
duration | 返回视频时长,单位:秒 |
ended | 返回视频是否播放结束 |
error | 视频错误信息,该错误会返回当前语言的文本 |
loop | 是否开启了循环播放 |
muted | 静音 |
networkState | 返回视频的当前网络状态 |
readyState | 返回视频的就绪状态 |
src | 设置/返回当前视频的地址 |
volume | 设置/返回视频的音量 |
root | 播放器外层容器 DOM |
controls | 播放器控制条外层容器 DOM |
fullscreen | 播放器是否处于全屏状态 |
bullet | 播放器弹幕是否开启 |
textTrack | 播放器外挂字幕是否开启 |
pip | 播放器画中画是否开启 |
方法
play
说明: 播放
举例:
player.play()
pause
说明: 暂停
举例:
player.pause()
reload
说明: 重新加载视频
举例:
player.reload()
destroy
说明: 播放器销毁
举例:
player.destroy(isDelDom) // 参数 isDelDom: true 删除内部DOM元素 | false 保留内部DOM元素,默认为true
注意
destroy后需要再次实例化的话至少要在下个宏任务里执行实例化操作。
canPlayType
说明: 检测您的浏览器是否能播放不同类型的视频
举例:
player.canPlayType('video/mp4; codecs="avc1.64001E, mp4a.40.5"')
getBufferedRange
说明: 返回当前的缓冲片段时间范围,start表示缓冲起始时间,end表示缓存截止时间
返回值 [start,end]
举例:
player.getBufferedRange()
getFullscreen
说明:播放器进入全屏
举例:
player.getFullscreen(player.root)
注意
移动端全屏横屏功能是环境(浏览器或webview)提供的能力,播放器对系统全屏无法控制是否横屏; iOS系统下全屏后播放器被系统接管,UI和功能不受播放器控制。
exitFullscreen
说明:播放器退出全屏
举例:
player.exitFullscreen(player.root)
getCssFullscreen
说明:播放器进入样式全屏
举例:
player.getCssFullscreen()
exitCssFullscreen
说明:播放器退出样式全屏
举例:
player.exitCssFullscreen()
getMiniplayer
说明:播放器进入迷你播放器模式
举例:
player.getMiniplayer()
exitMiniplayer
说明:播放器退出迷你播放器模式
举例:
player.exitMiniplayer()
rotate
说明:播放器旋转
参数: clockwise 是否顺时针旋转,默认false; innerRotate 是否内部旋转,默认true; times 旋转次数(一次旋转90度),默认1
举例:
player.rotate(true, true, 1)
start
说明: 启动播放器,start一般都是播放器内部隐式调用,主要功能是将video添加到DOM
参数: url 视频地址
举例:
player.start(url)
replay
说明: 播放器重播,重播的组件就调用了这个方法。
举例:
player.replay()
install 【静态方法】
说明: 插件的安装方法
举例:
Player.install('play',function(){})
切换视频源
player.src = 'new url'
注意
播放器未开始播放时如有切换视频源需求,可通过 player.start('new url') 实现。
切换封面图
player.poster = 'new poster url'
事件
事件名 | 含义 | 回调入参 |
---|---|---|
play | 播放 | |
playing | 继续播放 | |
pause | 暂停 | |
ended | 结束 | |
error | 错误 | 错误信息对象 {...} |
seeking | seek播放 | |
seeked | seek播放结束 | |
timeupdate | 播放时间改变 | |
waiting | 等待加载数据 | |
canplay | 视频可以播放 | |
canplaythrough | 视频可以流畅播放 | |
durationchange | 时长发生变化 | |
volumechange | 音量发生变化 | |
bufferedChange | 缓冲发生变化 | 当前缓存片段数组 [ [0, 10], [25, 60] ] |
definitionChange | 清晰度发生变化 | 切换前后清晰度 { from: '360p', to: '720p' } |
playbackrateChange | 播放速度发生变化 | 切换前后速度 { from: 1, to: 2 } |
screenShot | 完成截图操作 | 包含截图data URI的DOMString |
requestFullscreen | 进入全屏 | |
exitFullscreen | 退出全屏 | |
requestCssFullscreen | 进入样式全屏 | |
exitCssFullscreen | 退出样式全屏 | |
getRotateFullscreen | 进入样式横屏全屏 | |
exitRotateFullscreen | 退出样式横屏全屏 | |
controlShow | 控制栏展示 | |
controlHide | 控制栏隐藏 |
事件注册/注销
永久注册
player.on('事件名',function(){
//事件名称可以在上述查询
})
一次注册
player.once('事件名',function(){
})
事件注销
player.off('事件名',function(){
})
事件触发
player.emit('事件名')
生命周期
实例化完成
播放器调用Player进行实例化,实例化结束后会触发 ready 事件,通过对 ready 的监听可以确定实例化是否完成。实例化主要包括自定义UI生成、事件绑定、插件化实例化工作。代码如下:
let player=new Player({/*配置*/});
player.once('ready',()=>{console.log('ready')})
视频生成结束
考虑到节约视频流量和HTTP连接数的限制,PC端播放器在实例化的时候只是UI生效并未生成video视频,只有点击播放后才会创建video标签拉取视频进行播放。如果想捕获创建video的时机,监听 complete 事件。代码如下:
let player=new Player({/*配置*/});
player.once('complete',()=>{console.log('complete')})
不过值得注意的是,没有使用白名单的手机端会创建的原生的video。由于部分机型对插入的video有bug,所以播放器实例化的时候会直接生成video,这个动作的执行是在mobile插件,所以意味着 complete 事件会先于 ready 事件。
实例已销毁
播放器在销毁实例的时候会触发 destroy 事件,代码如下:
let player=new Player({/*配置*/});
player.once('destroy',()=>{console.log('destroy')})
注意
destroy后需要再次实例化的话至少要在下个宏任务里执行实例化操作。
注意
ready事件和complete事件是在实例化的时候已经触发,为了保证“后监听”方式能捕获到事件,请勿使用异步操作来监听,如setTimeout、Promise等,如果需要使用这些异步操作,请在响应函数内完成。
错误的使用方式
let player=new Player({/*配置*/}); setTimeout(function () { player.once('ready',()=>{console.log('ready')}) }, 1000);
正确的使用方式
let player=new Player({/*配置*/});
player.once('ready',()=>{
setTimeout(function () {
console.log('ready')
}, 1000);
})
辅助库
util
- createDom
- hasClass
- addClass
- removeClass
- toggleClass
- findDom
- format
- event
sniffer
- browser
- platform
- version
- device