Preset
概念
为了支持对播放器根据场景进行插件管理,我们提出Preset概念,Preset可以简单理解为“一组插件、语言包的集合”,当一个项目中有多种播放场景时,Preset将成为你管理插件的好帮手
播放器内置了defaultPreset、defaultPresetEn、mobilePreset、livePreset四个preset, 如果使用cdn方式引用播放器或者直接 import Player from 'xgplayer'
来引用, 默认集成defaultPreset
defaultPresetEn 没有集成中文语言包,其余几个preset都集成了中文语言包
使用预置preset
注意
如果只是希望对preset中的某几个插件进行禁用,依然可以参照config.ignores来配置,不需要自己实现一个preset
defaultPresetEn
defaultPresetEn 是 defaultPreset 的子集,少了中文包的引入
/**
* SimplePlayer 和 Player的区别是, Player集成了defaultPreset
* 这里defaultPresetEn完全替代defaultPreset
* 所以可以直接使SimplePlayer
*/
import { SimplePlayer } from 'xgplayer'
import defaultPresetEn from 'xgplayer/es/presets/default-en'
import 'xgplayer/dist/index.min.css'
SimplePlayer.defaultPreset = defaultPresetEn
const player = new SimplePlayer(options)
livePreset
相较于defaultPreset,减少直播用不到的一些插件,例如progress
、progresspreview
、time
、download
、screenShot
等直播用不到的插件,属于defaultPreset的子集
/**
* SimplePlayer 和 Player的区别是, Player集成了defaultPreset
* 这里LivePreset完全替代defaultPreset
* 所以可以直接使SimplePlayer
*/
import { SimplePlayer } from 'xgplayer'
import LivePreset from 'xgplayer/es/presets/live'
import 'xgplayer/dist/index.min.css'
SimplePlayer.defaultPreset = LivePreset
const player = new SimplePlayer(options)
mobilePreset
相较于defaultPreset,会减少只有pc端可使用的插件的引用,例如pc
、keyboard
等,属于defaultPreset的子集
/**
* SimplePlayer 和 Player的区别是, Player集成了defaultPreset
* 这里MobilePreset完全替代defaultPreset
* 所以可以直接使SimplePlayer
*/
import { SimplePlayer, Sniffer } from 'xgplayer'
import MobilePreset from 'xgplayer/es/presets/mobile'
import 'xgplayer/dist/index.min.css'
SimplePlayer.defaultPreset = MobilePreset
const player = new SimplePlayer(options)
开发自定义preset
与Preset的概念一样,开发一个Preset是非常简单的,使用方式如下
在原有的defaultPreset的preset的基础上做扩展
/**
* file ./myextpreset.js
*/
// 自定义组件
import PluginA from './pluginA'
import PluginB from './pluginB'
import PluginC from './pluginC'
// 引用预置语言jp
import JP from 'xgplayer/es/lang/jp'
class MyExtPreset {
constructor (options, playerConfig) {
this.plugins = [PluginA, PluginB, PluginC] // 使用的插件
this.ignores = ['replay'] // 统一禁用一些内置组件
this.i18n = [JP] // 需要安装的语言包
// 统一修改播放器配置
playerConfig.controls = {
mode: 'flex'
}
}
}
/**
* file ./init.js
*/
import Player from 'xgplayer'
import MyExtPreset from './myextpreset'
import 'xgplayer/dist/index.min.css'
const player = new Player({
...,
presets: ['default', MyExtPreset] // 启用默认的default,并且扩展自己的自定义preset
})
注意
播放器在使用传入config.presets
时会禁用掉Player.defaultPreset
,如果希望保留Player.defaultPreset
,config.presets数组第一项需要是'default'
不使用内置的preset, 自己按需求实现一个preset对内置组件和自定义组件进行组合
/**
* file ./mypreset.js
*/
import JP from 'xgplayer/es/lang/jp'
import Start from 'xgplayer/es/plugins/start'
import Play from 'xgplayer/es/plugins/play'
import Progress from 'xgplayer/es/plugins/progress'
import 'xgplayer/dist/index.min.css'
// 自定义组件
import PluginB from './pluginB'
// 引用预置语言jp
class MyPreset {
constructor (options, playerConfig) {
this.plugins = [Start, Play, Progress, PluginB] // 使用的插件
this.ignores = ['PluginC'] // 统一禁用一些内置组件
this.i18n = [JP] // 需要安装的语言包
// 统一修改播放器配置
playerConfig.controls = {
mode: 'flex'
}
}
}
/**
* file ./init.js
*/
// 因为完全自定义,不使用内置的默认defaultPreset了,使用精简版
import { SimplePlayer } from 'xgplayer'
import 'xgplayer/dist/index.min.css'
import MyPreset from './mypreset'
// 精简版设置默认preset
SimplePlayer.defaultPreset = MyPreset
const player = new Player({
...,
})
内置Preset说明
defaultPreset
默认preset包含插件如下:
- Replay
- Poster
- Start
- Enter
- Miniscreen
- PC
- Mobile
- Keyboard
- Loading
- Play
- Progress
- ProgressPreview
- FullScreen
- CssFullScreen
- Time
- Volume
- Rotate
- PIP
- PlayNext
- DownLoad
- ScreenShot
- Definition
- PlaybackRate
- Error
- Prompt
- Thumbnail
- MiniProgress
- Dynam13icBg
livePreset
直播preset包含插件如下:
- Poster
- Start
- Enter
- PC
- Mobile
- Keyboard
- Loading
- Play
- FullScreen
- Time
- Volume
- RotateIcon
- PIP
- CssFullScreen
- Definition
- PlaybackRate
- Error
mobilePreset
移动端preset包含插件如下:
- Replay
- Poster
- Start
- Enter
- Mobile
- Loading
- Play
- Progress
- FullScreen
- Time
- Volume
- Rotate
- PIP
- PlayNext
- DownLoad
- ScreenShot
- Definition
- PlaybackRate
- Error
- Prompt
- Thumbnail
- MiniProgress