事件
使用
npm包
import { Events } from 'xgplayer'
player.on(Events.PlAY, () => {
// TODO
})
cdn方式
const Events = window.Player.Events
player.on(Events.PlAY, () => {
// TODO
})
媒体事件
事件名 | 枚举值 | 回调参数 | 含义 |
---|---|---|---|
EVENTS.LOAD_START | loadstart | 无 | 视频内容开始加载 |
EVENTS.LOADED_DATA | loadeddata | 无 | 视频起播数据加载完成 |
EVENTS.PLAY | play | 无 | 播放 |
EVENTS.PAUSE | pause | 无 | 暂停 |
EVENTS.ENDED | ended | 无 | 结束 |
EVENTS.ERROR | error | Error | 错误 |
EVENTS.PLAYING | playing | 无 | (暂停、卡顿后)恢复播放 |
EVENTS.SEEKING | seeking | 无 | seek播放 |
EVENTS.SEEKED | seeked | 无 | seek完成 |
EVENTS.TIME_UPDATE | timeupdate | 无 | 播放时间改变 |
EVENTS.WAITING | waiting | 无 | 等待加载数据 |
EVENTS.CANPLAY | canplay | 无 | 视频缓冲足够数据,可以播放 |
EVENTS.CANPLAY_THROUGH | canplaythrough | 无 | 视频可以流畅播放 |
EVENTS.DURATION_CHANGE | durationchange | 无 | 视频时长发生变化 |
EVENTS.VOLUME_CHANGE | volumechange | 无 | 音量发生变化 |
EVENTS.RATE_CHANGE | ratechange | 无 | 播放速率发生变化 |
扩展事件
事件名 | 枚举值 | 回调参数 | 含义 |
---|---|---|---|
EVENTS.READY | ready | 无 | 播放器完成实例化 |
EVENTS.AUTOPLAY_PREVENTED | autoplay_was_prevented | 无 | 自动播放失败 |
EVENTS.AUTOPLAY_STARTED | autoplay_started | 无 | 成功自动播放 |
EVENTS.COMPLETE | complete | 无 | 播放器创建video完成,可以开始播放 |
EVENTS.URL_CHANGE | urlchange | { url: any } | 播放资源发生变化,player.src='xxx' |
EVENTS.PLAYER_FOCUS | focus | 无 | 播放器聚焦 |
EVENTS.PLAYER_BLUR | blur | 无 | 播放器失焦 |
EVENTS.FULLSCREEN_CHANGE | fullscreen_change | { isFullScreen: boolean } | 全屏状态切换 |
EVENTS.CSS_FULLSCREEN_CHANGE | cssFullscreen_change | { isCssFullScreen: boolean } | 样式全屏状态切换 |
EVENTS.MINI_STATE_CHANGE | mini_state_change | { isPip: boolean } | 画中画播放模式切换 |
EVENTS.DESTROY | destroy | 无 | 播放器销毁 |
EVENTS.REPLAY | replay | 无 | 播放器重新播放 |
EVENTS.RETRY | retry | 无 | 重试 |
EVENTS.DEFINITION_CHANGE | definition_change | 清晰度发生变化 | |
EVENTS.VIDEO_RESIZE | video_resize | 播放器容器尺寸发生变化 | |
EVENTS.PIP_CHANGE | pip_change | 画中画状态切换 | |
EVENTS.ROTATE | rotate | 无 | 播放器被旋转 |
EVENTS.SHORTCUT | shortcut | { data } 数据格式 | 播放器内置快捷键事件触发 |
EVENTS.SEI_PARSED | SEI_PARSED | 无 | SEI信息解析(目前在xgplayer-flv、xgplayer-hls插件安装时生效) |
EVENTS.USER_ACTION | user_action | { data } ,数据格式 | (3.0.0-alpha.92-2之后支持 )内置插件用户行为触发,所有内置插件用户行为交互都会下发该事件,可用于用户行为埋点 |
Examples
全屏状态变化
import Player, { Events } from 'xgplayer'
// 监听网页全屏(即页面全屏)也是一样的逻辑
player.on(Events.FULLSCREEN_CHANGE, (isFullscreen) => {
if (isFullscreen) {
// 全屏TODO
} else {
// 退出全屏TODO
}
})
倍速变化
import Player, { Events } from 'xgplayer'
player.on(Events.RATE_CHANGE, () => {
const rate = player.playbackRate // 默认为1
})
音量变化
import Player, { Events } from 'xgplayer'
player.on(Events.VOLUME_CHANGE, () => {
const muted = player.muted // 是否静音, Boolean
const volume = player.volume // 音量 0-1
})
快捷键操作
import Player, { Events } from 'xgplayer'
const player = new Player({
...
})
player.on(Events.SHORTCUT, (data) => {
// TODO
/**
* data = {
* action: String | Function, // 该快捷键触发的行为
* disable: Boolean, // 是否禁用
* key: String, // 功能定义key
* keyCode: Number // 快捷键键值
* }
*/
})
内置插件用户行为监控
3.0.0-alpha.92-2之后版本支持
import Player, { Events } from 'xgplayer'
const player = new Player({
...
})
player.on(Events.USER_ACTION, (data) => {
// data结构如下
/**
* data = {
* action: String, // 用户行为
* pluginName: String, // 从哪个插件触发
* props: [{ // 发生变化的属性列表
* props: String, // 发生变化的属性
* from: any, // 变化前的值
* to: any // 变化后的值
* }],
* event: Event, // 事件
* currentTime: Number, // 当前播放时间
* duration: Number, // 当前播放器时长
* ended: Boolean, // 是否播放结束
* paused: Boolean, // 是否暂停
* }
*/
})