0.1.10 • Published 3 years ago
mj-inphase-component v0.1.10
起步
安装inphase-component组件
npm i mj-inphase-component
引用main.js中引入样式
import 'mj-inphase-component/lib/mj-inphase-component.css';
全局注册
import mjInphaseComponent from 'mj-inphase-component';
Vue.use(mjInphaseComponent);
在组件中使用
<inphase-player></inphase-player> // 必须使用该标签
inphase-player 是依赖于西瓜视频 虽然直接 install了mj-inphase-component也会自动下载西瓜视频相关组件 如果报错也可以按照下面步骤从新安装西瓜视频相关组件,一般可以省略
npm i xgplayer xgplayer-hls.js xgplayer-mp4 xgplayer-flv.js
如果需要自定义样式,安装以下loader
(自定义样式功能暂未开放)
npm i node-sass sass-loader raw-loader
API
属性
分屏数
- 配置项:
split-screen
- 类型: Number
- 默认值:1
- 参考值:1 | 4 | 9 | 16
- 描述:传入参考值以外的值控制台会报错,值默认回到1。
视频名称
- 配置项:
video-name
- 类型:String
- 默认值:""
- 描述:在播放器上显示该视频源的名称,仅适用于单个视频源。多个视频源需要通过新增对象属性
name
来使用。
视频源
- 配置项:
video-url
- 类型: String
- 默认值:""
- 描述:单个视频源。不支持分屏功能。该参数不能与
video-list
混用,否则可能会有意料之外的错误。
视频数据
- 配置项:
video-list
- 类型: Array< Object >
- 默认值:[]
- 参考数据结构:
[
{
url: '', // 摄像头视频或直播流url
definitionList: [ // 清晰度数据
{
name: '标清', // 渲染为清晰度切换播放栏选项
url: ''
},
{
name: '高清',
url: ''
},
{
name: '超清',
url: ''
}
],
name: '视频源1', // 视频源名称
poster: '' // 封面图
}
]
- 描述:多个视频源。支持分屏功能。
该参数不能与
video-url
混用,否则可能会有意料之外的错误。
清晰度
- 配置项:
definition-list
- 类型: Array < Object >
- 默认值:[]
- 参考数据结构:
// 第①种方式:
[
{
name: '标清', // 渲染为清晰度切换播放栏选项
url: ''
},
{
name: '高清',
url: ''
},
{
name: '超清',
url: ''
}
]
- 描述:仅在通过
video-url
传入单个视频源时使用。 切换video-url
时,需要同时切换该选项,保持视频源与该视频源清晰度资源同步。 多个视频源需要通过新增对象属性definitionList
来使用。
直播
- 配置项:
live
- 类型: Boolean
- 默认值:false
- 参考值:true | false
- 描述:开启直播,支持直播视频流。组件只能通过该参数判断当前视频源是否为 直播流,所以请根据当前业务进行严格区分,否则会有意料之外的结果。
封面图
- 配置项:
poster
- 类型: String
- 默认值:''
- 描述:当播放器初始化后在用户点击播放按钮前显示的图像。
多个视频源需要通过新增对象属性
poster
来使用。
唯一视频播放
- 配置项:
only-one-play
- 类型:Boolean
- 默认值:false
- 参考值:true | false
- 描述:在同一个页面是否只允许播放一个视频。仅支持通过
video-url
传入的视频源。
西瓜播放器原始配置
- 配置项:
xg-config
- 类型:Object
- 默认值:{}
- 参考值:
{
download: true,
screenShot: true,
autoplay: true,
definitionActive: 'hover'
}
- 描述:西瓜播放器原始配置,只列出几个常用配置项,详细请参考西瓜播放器官网配置。
默认logo
- 配置项:
show-default-logo
- 类型:Boolean
- 默认值:true
- 参考值:true | false
- 描述:是否开启默认logo功能。
插槽
默认logo
- 描述:通过
#logo
或v-slot:logo
具名插槽插入logo图片, 可自定义大小,会自动垂直水平居中,在视频开始播放之后消失。 如果不传logo图片,会显示默认logo。 如果不需要该功能,可通过showDefaultLogo
属性关闭。 - 使用方法:
<inphase-player>
<template #logo>
<img :src="logo" alt="logo" width="80px" height="80px">
</template>
</inphase-player>
事件
监听视频重复
- 配置项:
repeat-video
- 返回类型:Object
- 返回值:重复的视频对象
- 描述:当传入重复视频时,该事件触发。仅针对多个数据源生效。
监听视频播放错误
- 配置项:
play-error
- 返回类型:(Object, String)
- 返回值:第一个参数为出错的当前视频配置对象,第二个参数为错误信息
- 描述:当视频播放出错时,该事件触发。
方法
方法名 | 用法 | 描述 |
---|---|---|
destroyPlayer | this.$refs.player.destroyPlayer() | 销毁当前视频实例(仅适用于单个视频源) |
destroyPlayers | this.$refs.player.destroyPlayers() | 销毁当前所有分屏(仅适用于多个视频源),调用该方法时需要手动将传入的video-list绑定的数组清空 |
功能详细及注意事项
分屏
- 通过url对比,重复的视频不会播放,不会占用分屏板块,同时会触发
repeat-video
自定义事件 - 当前分屏数全部播放视频后,后续再添加视频,只替换最后一块屏
- 当分屏较多时,切到较少分屏时,超出较少分屏数的视频会被销毁
- 当替换视频时,原理为重新拉流,并非将该视频实例销毁了重建,后者会导致重建的播放器无法显示播放栏
关闭视频
- 点击视频右上角的
×
可清除当前视频信息,但视频实例未销毁 - 清除视频之后,再新增视频将会从头到尾依次增加,中间有未清除的视频会自动跳过
清晰度
- 该数组中第一个参数必须为
标清
视频对象,后续清晰度对象则可传可不传。 - 当不传入
标清url
时,默认标清为当前传入url
。 标清
之外的清晰度若不传入url
,则播放器上对应清晰度字样不会显示。- 如果视频地址列表只有一个地址,清晰度切换控件也会自动关闭。
切换视频
- 在同一块屏幕上,如果已经播放过一个特定格式的视频源, 那么切换时不能切换到另一种格式的视频源,必须为同一种格式。
- 如果一块屏幕从未播放过或者通过上述分屏板块第3项操作销毁, 那么则支持切换不同格式的视频。
唯一视频播放
- 当一个页面有多个该组件播放视频,播放其中一个,另外的视频会自动暂停,避免干扰当前播放的视频。
- 通过组件自带分屏功能实现的多个视频播放不支持该属性。