<template> <div class="video_box"> <div class="top"> <van-icon name="cross" class="closeIcon" @click="closeVideo" /> </div> <div class="video"> <!-- <video id="video" controls preload="auto" loop="loop" x5-video-player-fullscreen="true" x5-video-orientation="portraint" playsinline="true" x5-video-player-type="h5" style="object-fit:fill" > <source :src="src"> </video> --> <video ref="videoPlayer" class="video-js" id="videoplayer" playsinline="true" preload="none" x5-video-player-type="h5" x-webkit-airplay="true" webkit-playsinline="true" > </video> </div> </div> </template> <script> import videojs from 'video.js'; export default { data () { return { player: null, } }, computed: { src () { return 'https://inno.sh-sict.com/gastric-api/gastric-cancer-data/file/show?videoName=' + this.$route.query.src } }, methods: { // 实例化播放器 createVideo () { let options = { width: this.width, autoplay: false, controls: true, sources: [ { src: this.src, type: "video/mp4", }, { src: this.src, type: "video/ogg", }, { src: this.src, type: "video/webm", } ] } this.player = videojs('videoplayer', options, function onPlayerReady () { console.log('onPlayerReady', this); }) }, closeVideo () { this.$router.go(-1) } }, mounted () { videojs.addLanguage('zh-CN', { "You aborted the media playback": "视频播放被终止", "A network error caused the media download to fail part-way.": "网络错误导致视频下载中途失败。", "The media could not be loaded, either because the server or network failed or because the format is not supported.": "视频因格式不支持或者服务器或网络的问题无法加载。请尝试使用uc浏览器或qq浏览器。", "The media playback was aborted due to a corruption problem or because the media used features your browser did not support.": "由于视频文件损坏或是该视频使用了你的浏览器不支持的功能,播放终止。", "No compatible source was found for this media.": "无法找到此视频兼容的源。", }); this.$nextTick(() => { setTimeout(() => { this.createVideo() }) }) this.$once('hook:beforeDestroy', () => { this.player.dispose(); }) }, } </script> <style lang="scss" scoped> .video_box { display: flex; flex-direction: column; width: 100%; height: 100%; position: relative; .top { height: 40px; background: #000; text-align: right; color: #fff; font-size: 20px; padding: 5px 10px 0 0; } .video { flex: 1; } } #videoplayer { width: 100%; height: 100%; } ::v-deep .video-js .vjs-big-play-button { font-size: 0.5rem; width: 1.5rem; height: 0.8rem; top: 50%; left: 50%; transform: translateX(-50%) translateY(-50%); } </style>