中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

vue-video-player中怎么通過自定義按鈕組件實現全屏切換效果

發布時間:2021-06-16 15:51:50 來源:億速云 閱讀:252 作者:Leah 欄目:web開發

vue-video-player中怎么通過自定義按鈕組件實現全屏切換效果,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

<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, {
    constructor: function (player, options) {
     Button.apply(this, arguments)
     this.addClass('fullscreen-enter')
    },
    handleClick: () => {
     // 綁定點擊事件
    },
    buildCSSClass: function () {
     return 'vjs-icon-custombutton vjs-control vjs-button'
    }
   })
   
   //注冊
   videojs.registerComponent('myButton', myButton)
   
   this.$nextTick(() => {
    // 添加到controlBar中
    this.$refs.videoPlayer1.player.getChild('controlBar').addChild('myButton')
   })
  }
  ...
 }
}

// 在 style 中指定自定義按鈕樣式
<style>
.video-js{
  .vjs-control-bar{
  .vjs-icon-custombutton {
   font-family: VideoJS;
   font-weight: normal;
   font-style: normal; }
   .vjs-icon-custombutton:before {
   content: "\f108";
   font-size: 1.8em;
   line-height: 1.67;
   }
  }
 }
}
</style>

自定義的按鈕圖標用的還是默認的全屏圖標,接著得實現按鈕的點擊事件

頁面和彈出層中分別是倆個 播放器實例 videoPlayer1, videoPlayer2,需要考慮到的是:當自定義切換事件觸發后,倆個播放器的同步( videoPlayer1播放了10s, 全屏切換后,videoPlayer2得從 10s 繼續播放,而不是從頭播放 )

onCustombuttonClick () {
 let _time = this.$refs.videoPlayer1.player.currentTime() //已播放時長
 this.$refs.videoPlayer2.player.currentTime(_time)
 this.$refs.videoPlayer2.player.play()
}

同理:關閉彈出層后, 也得把 videoPlayer2 的播放時長 賦值給 videoPlayer1,此處是通過 監聽彈出層顯示、隱藏等事件來實現

vue-video-player中怎么通過自定義按鈕組件實現全屏切換效果 

關于vue-video-player中怎么通過自定義按鈕組件實現全屏切換效果問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

敦煌市| 平武县| 清远市| 随州市| 新丰县| 文登市| 汾西县| 大同县| 吉木萨尔县| 威远县| 扬州市| 温泉县| 高青县| 福贡县| 五原县| 措勤县| 丰原市| 攀枝花市| 闽侯县| 菏泽市| 湾仔区| 渭源县| 灌云县| 海宁市| 阿拉善左旗| 英山县| 蚌埠市| 革吉县| 疏附县| 兴文县| 德庆县| 赤峰市| 乐至县| 兴仁县| 乾安县| 和田市| 鲁山县| 泽普县| 都昌县| 旬阳县| 德格县|