背景:根据用户的信息来显示不一样的视频源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();