1.安裝
npm install vue-video-player -S
npm install 'video.js' -S
2.引入
import Vue from 'vue'
import VideoPlayer from 'vue-video-player'
// require('video.js/dist/video-js.css')? //按官網(wǎng)引會找不到然后報錯序苏,換成下面那個
require('vue-video-player/node_modules/video.js/dist/video-js.css')
require('vue-video-player/src/custom-theme.css')
Vue.use(VideoPlayer)
3.使用
<div class="my_video">
? ? <video-player
? ? ? class="video-player vjs-custom-skin"
? ? ? ref="videoPlayer"
? ? ? :playsinline="true"
? ? ? :options="options"
? ? ? @play="onPlayerPlay($event)"
? ? ? @pause="onPlayerPause($event)"
? ? ? @ended="onPlayerEnded($event)"
? ? ? @waiting="onPlayerWaiting($event)"
? ? ? @playing="onPlayerPlaying($event)"
? ? ? @loadeddata="onPlayerLoadeddata($event)"
? ? ? @timeupdate="onPlayerTimeupdate($event)"
? ? ? @canplay="onPlayerCanplay($event)"
? ? ? @canplaythrough="onPlayerCanplaythrough($event)"
? ? ? @statechanged="playerStateChanged($event)"
? ? ? @ready="playerReadied"
? ? >
? ? </video-player>
</div>
4.事件及其他
1.事件函數(shù):
@play="onPlayerPlay($event)"
@pause="onPlayerPause($event)"
@ended="onPlayerEnded($event)"
@waiting="onPlayerWaiting($event)"
@playing="onPlayerPlaying($event)"
@loadeddata="onPlayerLoadeddata($event)"
@timeupdate="onPlayerTimeupdate($event)"
@canplay="onPlayerCanplay($event)"
@canplaythrough="onPlayerCanplaythrough($event)"
@statechanged="playerStateChanged($event)"
@ready="playerReadied"
2.控制函數(shù)
this.options['sources'][0]['src'] = '接口地址';? //重新賦值視頻地址
this.$refs.videoPlayer.player.play() // 播放
this.$refs.videoPlayer.player.pause() // 暫停
this.$refs.videoPlayer.player.src(src) // 重置進度條
3.常用屬性
options: {
? ? playbackRates: [0.5, 1.0, 1.5, 2.0, 3.0], // 可選的播放速度
? ? autoplay: true, // 是否自動播放
? ? muted: false, // 是否靜音
? ? loop: true, // 是否開啟循環(huán)播放
? ? preload: "auto", // 自動預加載
? ? language: "zh-CN", // 語言绢掰,'en', 'zh-cn', 'zh-tw'
? ? aspectRatio: "16:9", // 播放器高寬占比(例如"16:9"或"4:3")
? ? fluid: true, // 當true時,Video.js player將擁有流體大小忆矛。換句話說卵迂,它將按比例縮放以適應其容器裕便。
? ? sources: [
? ? ? {
? ? ? ? type: "video/mp4", // 類型
? ? ? ? src:
? ? ? ? ? "https://mp4i.vodfile.m1905.com/202011280727/c884af78f3467d3e7d65804b40c74771/video/2020/11/26/v20201126Z7OID3M29Z1FF6G3/v20201126Z7OID3M29Z1FF6G3.mp4", // url地址
? ? ? },
? ? ],
? ? poster:
? ? ? "https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1606462956126&di=2d87964d4faf656af55d09d938640d97&imgtype=0&src=http%3A%2F%2Fattachments.gfan.com%2Fforum%2Fattachments2%2F201310%2F10%2F150326y7dzdd8d4kpjjdsd.jpg", // 封面地址
? ? notSupportedMessage: "此視頻暫無法播放,請稍后再試", // 允許覆蓋Video.js無法播放媒體源時顯示的默認信息见咒。
? ? controlBar: {
? ? ? timeDivider: true, // 是否顯示當前時間和持續(xù)時間的分隔符偿衰,"/"
? ? ? durationDisplay: true, // 是否顯示持續(xù)時間
? ? ? remainingTimeDisplay: false, // 是否顯示剩余時間
? ? ? fullscreenToggle: true, // 是否顯示全屏按鈕
? ? },
? },
4.回調(diào)方法
// 播放回調(diào)
onPlayerPlay($event) {
? console.log("player play!", $event);
},
// 暫停回調(diào)
onPlayerPause($event) {
? console.log("player pause!", $event);
},
// 視頻播完回調(diào)
onPlayerEnded($event) {
? console.log($event);
},
// DOM元素上的readyState更改導致播放停止
onPlayerWaiting($event) {
? console.log($event);
},
// 已開始播放回調(diào)
onPlayerPlaying($event) {
? console.log($event);
},
// 當播放器在當前播放位置下載數(shù)據(jù)時觸發(fā)
onPlayerLoadeddata($event) {
? console.log($event);
},
// 當前播放位置發(fā)生變化時觸發(fā)改览。
onPlayerTimeupdate($event) {
? console.log($event);
},
//媒體的readyState為HAVE_FUTURE_DATA或更高
onPlayerCanplay($event) {
? // console.log('player Canplay!', player)
},
//媒體的readyState為HAVE_ENOUGH_DATA或更高下翎。這意味著可以在不緩沖的情況下播放整個媒體文件。
onPlayerCanplaythrough($event) {
? // console.log('player Canplaythrough!', player)
},
//播放狀態(tài)改變回調(diào)
playerStateChanged($event) {
? console.log("player current update state", $event);
},
//將偵聽器綁定到組件的就緒狀態(tài)宝当。與事件監(jiān)聽器的不同之處在于视事,如果ready事件已經(jīng)發(fā)生,它將立即觸發(fā)該函數(shù)庆揩。俐东。
playerReadied() {
? console.log("example player 1 readied");
},
5.事件調(diào)用
// 加載視頻
? ? ? // this.$refs.videoPlayer.player.load();
? ? ? // 播放視頻
? ? ? // this.$refs.videoPlayer.player.play();
? ? ? // 暫停播放
? ? ? // this.$refs.videoPlayer.player.pause();
? ? ? // 直接全屏 如果當前設(shè)備支持的話
? ? ? // this.$refs.videoPlayer.player.requestFullscreen();
? ? ? // setTimeout(() => {
? ? ? //? // 在全屏模式下,將視頻恢復到正常大小
? ? ? //? this.$refs.videoPlayer.player.exitFullscreen();
? ? ? // }, 1000);
? ? ? // 當環(huán)境不支持全屏時 則擴展鋪滿容器
? ? ? // this.$refs.videoPlayer.player.enterFullWindow();
? ? ? // 進入全屏后操作的事件
? ? ? setTimeout(() => {
? ? ? ? // 重置播放器
? ? ? ? // this.$refs.videoPlayer.player.reset();
? ? ? ? // 返回當前播放源信息
? ? ? ? // console.log("currentSources : ", this.$refs.videoPlayer.player.currentSources());
? ? ? ? // 獲取或者設(shè)置預加載屬性
? ? ? ? // this.$refs.videoPlayer.player.preload(val);
? ? ? ? // 播放控件是否顯示
? ? ? ? // this.$refs.videoPlayer.player.controls(false);
? ? ? }, 1000);
6.官方文檔地址
https://docs.videojs.com/tutorial-options.html