vue-video-player 通过自定义按钮组件实现全屏切换效果【推通过自定义按钮组件实现全屏切换效果【推
荐】荐】
主要介绍了vue-video-player,通过自定义按钮组件实现全屏切换效果,非常不错,具有一定的参考借鉴价值,需
要的朋友可以参考下
最近公司的产品上线,一些高级功能在基础版本中不对用户开发,通过视频的形式展示。
产品开发用的是 vue, 经同事介绍使用了vue-video-player 视频播放插件,通过 demo 案例很快实现了视频播放效果
<video-player
class="vjs-custom-skin"
ref="videoPlayer1"
:options="playerOptions"
:playsinline="true"
:events="events"
@play="onPlayerPlay($event)"
@pause="onPlayerPause($event)"
@ended="onPlayerEnded($event)"
@loadeddata="onPlayerLoadeddata($event)"
@waiting="onPlayerWaiting($event)"
@playing="onPlayerPlaying($event)"
@timeupdate="onPlayerTimeupdate($event)"
@canplay="onPlayerCanplay($event)"
@canplaythrough="onPlayerCanplaythrough($event)"
@ready="playerReadied"
@statechanged="playerStateChanged($event)">
</video-player>
老板看了之后说: '不需要全屏切换,不需要让用户看的那么仔细',
通过配置项 controlBar: {fullscreenToggle: false}, 关闭全屏切换后,由于视频标清、展示区域大小 483px X 303px,根本看不清视频里
内容,老板又说:"实现全屏不铺满整个屏幕,而是通过固定大小的弹出层展示"
首先想到的是: 开启全屏切换,监听全屏切换的事件,在事件中强制退出全屏,显示固定大小的弹出层
<video-player
...
:events="events"
@fullscreenchange="onPlayerFullScreenchange($event)"
...
>
</video-player>
// 需要在 events 中指定全屏切换事件,不然无法监听
data () {
return {
videoDialogVisible: false, // 控制弹出层
events: ['fullscreenchange']
}
},
methods: {
...
onPlayerFullScreenchange (player) {
player.exitFullscreen() //强制退出全屏,恢复正常大小
this.videoDialogVisible = true
}
...
}
这种办法,虽然能实现,但在强制退出全屏那一下,整个页面会跳一下,碰到网速慢,或电脑卡的情况,效果更差...
没办法,继续想办法,在该插件 GitHub 库中,有网友提过相关 issues , 通过 注册一个自定义按钮组件,添加到播放器的
controlBar中,替换默认的全屏切换按钮
import * as videojs from 'video.js'
export default {
...
methods: {
...
createMyButton () {
let Button = videojs.getComponent('Button')
let myButton = videojs.extend(Button, {
评论0