<template> <div style="width: 100%; height: 100%" class="bs-design-wrap" > <video-player ref="videoPlayer1" :options="videoOptions" class="vjs-custom-skin videoPlayer" :playsinline="true" /> </div> </template> <script> import { videoPlayer } from 'vue-video-player' import 'video.js/dist/video-js.css' import 'videojs-contrib-hls' import { refreshComponentMixin } from 'data-room-ui/js/mixins/refreshComponent' export default { name: 'Video', components: { videoPlayer }, mixins: [refreshComponentMixin], props: { // 卡片的属性 config: { type: Object, default: () => ({}) } }, computed: {}, beforeDestroy () { this.$refs.videoPlayer1.dispose() }, data () { return { // TODO 这里介绍各个参数的意义 videoOptions: { live: true, // 浏览器准备好时开始回放 autoplay: false, // true:默认视频播放无声音,需要手动开启声音 muted: false, // 播放速度 playbackRates: [0.5, 1.0, 1.5, 2.0], // 语言 language: 'zh-CN', // 当true时,播放器将按比例缩放以适应其容器 fluid: true, // 无法播放时提示信息 notSupportedMessage: '该视频无法正常播放', // 纵横比或屏幕高宽比 aspectRatio: '16:9', controlBar: { timeDivider: true, durationDisplay: true, remainingTimeDisplay: true, // 全屏按钮 fullscreenToggle: true }, // 播放器宽度,测试无效 // width: 100, // 视频封面图 poster: this.config.customize.posterUrl, sources: [ { // 流配置,数组形式,会根据兼容顺序自动切换 type: this.config.customize.videoType, src: this.config.customize.videoUrl } ] }, dataForm: { script: '' } } }, watch: {}, mounted () {}, methods: { // 由于静态组件没有混入公共函数,所以需要定义一个changeStyle方法,以免报错 changeStyle (config) { this.videoOptions.sources.type = config.customize.videoType this.videoOptions.sources.type = config.customize.videoUrl this.videoOptions.poster = config.customize.posterUrl } } } </script> <style lang="scss" scoped> .bs-design-wrap { position: relative; width: 100%; height: 100%; background-color: transparent; border-radius: 4px; box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1); box-sizing: border-box; .videoPlayer { width: 100%; height: 100%; display: flex; align-items: center; } } /*滚动条样式*/ ::v-deep ::-webkit-scrollbar { width: 4px; border-radius: 4px; height: 4px; } ::v-deep ::-webkit-scrollbar-thumb { background: #dddddd !important; border-radius: 10px; } ::v-deep .video-js .vjs-big-play-button { z-index: 100; left: 50%; top: 50%; transform: translate(-50%, -50%); font-size: 4em; } </style>