背景:根據用戶的信息來顯示不一樣的視頻源css
<template> <div class="video-box-wrap" v-show="video.show"> <div class="video-box"> <em class="video-close" @click="showVideo(false)"></em> <video-player class="video-player vjs-custom-skin" ref="videoPlayer" :options="playerOptions" :playsinline="true" customEventName="customstatechangedeventname" @play="onPlayerPlay($event)" @pause="onPlayerPause($event)" @ready="playerReadied"> </video-player> </div> </div> </template> export default { data () { return { playerOptions: { // videojs options muted: true, language: 'en', playbackRates: [0.7, 1.0, 1.5, 2.0], sources: [{ type: "video/mp4", src: "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm" // src: "http://www.17sucai.com/preview/501914/2017-08-04/%E9%A1%B5%E9%9D%A2/media/mov_bbb.mp4" }], muted: false, // 默認狀況下將會消除任何音頻。 loop: false, language: 'zh-CN', fluid: true, // 當true時,Video.js player將擁有流體大小。換句話說,它將按比例縮放以適應其容器。 poster: "/static/images/author.jpg", width: 700, notSupportedMessage: '此視頻暫沒法播放,請稍後再試', //容許覆蓋Video.js沒法播放媒體源時顯示的默認信息。 }, } }, methods: { showVideo (bol) { let myPlayer = this.$refs.videoPlayer.player; if( bol ) { myPlayer.src(this.getUserType); //根據userType的不一樣展現不一樣的視頻地址 return false }; } }, computed: { getUserType () { let userType = parseInt(this.userInfo.userType); let videoSrc = "" if(userType === 1){ videoSrc = "https://cdn.theguardian.tv/webM/2015/07/20/150716YesMen_synd_768k_vp8.webm" }else if (userType === 2){ videoSrc = "http://www.17sucai.com/preview/501914/2017-08-04/%E9%A1%B5%E9%9D%A2/media/mov_bbb.mp4" } return videoSrc; } } }
初始 playerOptions.sources.src必須有值,不然後續視頻的進度條會有問題
//感受我使用的是最笨的方法,若是有更好的方法,望留言指教>_<vue
須要更改播放按鈕,默認的是有一個比較醜的播放按鈕,可是設計人員給出的播放按鈕比較漂亮,一開始的思路是怎麼把控制播放的事件綁定到本身寫的按鈕上面,最終沒有實現= =。。。 而後開始想改變樣式來控制,直接暴力修改它本來的樣式,並經過比較播放暫停播放狀態容器上類名的不一樣來顯示隱藏「漂亮」的播放按鈕 播放時和暫停時容器的類名差異是有沒有 「vjs-paused」 最終的解決方法: .video-js{ .fs(24);// 樣式文件裏元素的單位是em,由於控制條過小了,默認的font-size是10px,因此這裏作了更改。 fs(24)最終經過less的處理會轉換爲rem單位 } .video-js .vjs-big-play-button{ position: absolute; display: block; left: 0px; top: 0px; width: 100%; height: 100%; background: rgba(0, 0, 0, .7); border: none; } .video-js .vjs-big-play-button .vjs-icon-placeholder:before{ position: absolute; content: ""; .w(120); .h(120); left: 50%; top: 50%; .ml(-60); .mt(-60); background: url("../../assets/images/icon_play@2x.png") center center no-repeat; background-size: 100% 100%; border: none; } //下面代碼控制播放按鈕是否顯示 .vjs-controls-disabled .vjs-big-play-button, .vjs-has-started .vjs-big-play-button, .vjs-using-native-controls .vjs-big-play-button, .vjs-error .vjs-big-play-button { display: none; } .vjs-paused .vjs-big-play-button { display: block; } 今天腦殼忽然開竅,發現一個不用更改原先的css就能夠實現控制播放的方法,其實這樣子用就能夠,😅 this.$refs.videoPlayer.player.play(); this.$refs.videoPlayer.player.pause();