背景:根据用户的信息来显示不同的视频源
<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-video-player
需要更改播放按钮,默认的是有一个比较丑的播放按钮,但是设计人员给出的播放按钮比较漂亮,一开始的思路是怎么把控制播放的事件绑定到自己写的按钮上面,最终没有实现= =。。。
然后开始想改变样式来控制,直接暴力修改它原本的样式,并通过比较播放暂停播放状态容器上类名的不同来显示隐藏“漂亮”的播放按钮
播放时和暂停时容器的类名差别是有没有 “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();
所有评论(0)