快速上手
只需三步:安装、DOM占位、实例化即可完成播放器的使用。
安装
# 最新稳定版
$ npm install xgplayer
对于已有项目也可以通过 CDN 引入,代码如下:
<script src="//unpkg.byted-static.com/xgplayer/2.31.2/browser/index.js" type="text/javascript"></script>
注意
生产环境使用时请在CDN地址中锁定版本,CDN使用方法参考 jsdelivr。
使用
1. 在页面提供占位 DOM
<div id="mse"></div>
2. 实例化
let player = new Player({
id: 'mse',
url: '//abc.com/**/*.mp4'
});
就两步完成最简单的视频播放(mp4点播),播放器提供了较丰富的配置选项,如自动播放、贴图、音量控制、内置控件关闭等等,更多配置参考 配置。
如果想完成直播的功能,播放器会自动识别直播或回放,更多内容请参考 示例 。
注意
播放器核心包和插件都使用 babel 编译到 ES5。
效果
自定义样式
注意
xgplayer@2.0.0及以上播放器版本支持该功能。
该功能仅限在npm包引入方式下使用;CDN引入方式下暂时无法使用该功能。
不同业务对播放器样式有不同的需求,通过以下3步可实现播放器样式的完全自定义开发。
命令行输入
npx xgplayer eject [targetDir] [skinName]
实现将播放器样式相关代码复制到指定相对路径[targetDir]
下的.xgplayer/skin
文件夹中,然后就可以任意修改实现自定义样式了。[skinName]
为自定义样式名,可不输入。业务代码中引入播放器时也把自定义样式的入口文件引入,例如:
import Player from 'xgplayer';
import './.xgplayer/skin/index.js';
- 复制出来的播放器样式源码中包含scss和svg类型文件,需要构建工具进行相应的支持,譬如webpack打包前需要安装配置sass-loader和raw-loader
轻量级使用
使用xgplayer会默认引入所有播控插件,导致包体积较大。xgplayer@2.19.0及以上播放器版本开始支持轻量级使用方式,可以从播放器播控插件库中按需选择加载相应的插件。
播控插件名 | 含义 |
---|---|
airplay | 播放镜像(投屏) |
cssFullscreen | 样式全屏 |
danmu | 弹幕 |
definition | 清晰度 |
download | 下载 |
enter | 视频起播加载UI控件 |
error | 播放出错 |
flex | 底部控制栏中的弹性占位控件 |
fullscreen | 全屏 |
keyboard | 键盘快捷键 |
loading | 播放卡顿时展示的UI控件 |
localPreview | 预览本地视频 |
memoryPlay | 记忆播放 |
miniplayer | 迷你播放器 |
pip | 画中画 |
play | 播放/暂停(底部控制栏左侧) |
playbackRate | 倍速 |
playNext | 播放下一集 |
poster | 封面图 |
progress | 进度条 |
reload | 重新载入 |
replay | 重播 |
rotate | 旋转 |
screenShot | 截图 |
textTrack | 外挂字幕 |
time | 播放时间 |
volume | 音量 |
目前提供以下2种轻量使用方式:
使用简易版本
使用简易版本,除了播放内核相关代码,还会自动引入 播放/暂停、全屏、进度条、封面图、播放时间、重播 这几个播控插件。 以下示例代码是在简易版本基础上,再引入使用音量和倍速插件。
npm包方式
import Player from 'xgplayer/dist/simple_player';
import volume from 'xgplayer/dist/controls/volume';
import playbackRate from 'xgplayer/dist/controls/playbackRate';
let player = new Player({
id: 'vs',
url: 'XXX.mp4',
controlPlugins: [
volume,
playbackRate
],
playbackRate: [0.5, 0.75, 1, 1.5, 2] //传入倍速可选数组
});
CDN方式
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/simple_player.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/volume.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/playbackRate.js" type="text/javascript"></script>
<script type="text/javascript">
let player = new window.Player({
id: 'vs',
url: 'XXX.mp4',
controlPlugins: [
window.PlayerControls.volume,
window.PlayerControls.playbackRate
],
playbackRate: [0.5, 0.75, 1, 1.5, 2] //传入倍速可选数组
});
</script>
使用播放内核
使用播放内核,默认只引入播放内核相关代码。 以下示例代码是在播放内核基础上,再引入使用 播放/暂停、全屏、进度条、音量和画中画插件。
npm包方式
import Player from 'xgplayer/dist/core_player';
import play from 'xgplayer/dist/controls/play';
import fullscreen from 'xgplayer/dist/controls/fullscreen';
import progress from 'xgplayer/dist/controls/progress';
import volume from 'xgplayer/dist/controls/volume';
import pip from 'xgplayer/dist/controls/pip';
import flex from 'xgplayer/dist/controls/flex';
let player = new Player({
id: 'vs',
url: 'XXX.mp4',
controlPlugins: [
play,
fullscreen,
progress,
volume,
pip,
flex
],
pip: true //打开画中画功能
});
CDN方式
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/core_player.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/play.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/fullscreen.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/progress.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/volume.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/pip.js" type="text/javascript"></script>
<script src="//unpkg.byted-static.com/xgplayer@2.19.0/browser/controls/flex.js" type="text/javascript"></script>
<script type="text/javascript">
let player = new window.Player({
id: 'vs',
url: 'XXX.mp4',
controlPlugins: [
window.PlayerControls.play,
window.PlayerControls.fullscreen,
window.PlayerControls.progress,
window.PlayerControls.volume,
window.PlayerControls.pip,
window.PlayerControls.flex
],
pip: true //打开画中画功能
});
</script>
兼容性
- PC Web端支持直接播放mp4视频,播放HLS、FLV、MPEG-DASH需要浏览器支持Media Source Extensions
- iOS系统Web场景支持直接播放mp4和HLS,不支持播放FLV、MPEG-DASH,mp4插件、flv插件、hls插件在ios系统上均不支持
- 安卓系统Web场景支持直接播放mp4和HLS,播放FLV、MPEG-DASH需要浏览器支持Media Source Extensions