问题描述
我尝试添加 videojs-contrib-hls lib ,但它没有帮助。 也许我应该尝试其他播放器,哪个播放器可以正确使用 hls 源?
<script>
import 'video.js/dist/video-js.css'
import {videoPlayer} from 'vue-video-player'
import videojs from 'video.js'
window.videojs = videojs
export default {
components: {
videoPlayer
},data () {
return {
playerOptions: {
height: '700',width: '1820',controls: true,sourceOrder: true,hls: true,sources: [{
// type: "video/mp4",type: "application/x-mpegURL",// src: "http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/BigBuckBunny.mp4",src: "http://127.0.0.1:8081/live/93UEctBmn/index.m3u8",withCredentials: false,}],autoplay: false,},techOrder: ['html5'],html5: { hls: { withCredentials: false } },contentData: {}
}
},mounted() {
this.$store.dispatch("content/getById",this.$route.params.contentId).then(
(res) => {
// this.message = data.message;
// this.snackbar = true;
if(res.data.error){
console.log(res.data.error);
return;
}
this.contentData = Array.isArray(res.data) ? res.data[0] : res.data;
},(error) => {
// this.message = error.response.data.message || error;
// this.snackbar = true;
console.log(error)
}
);
}
}
</script>
<template>
<div class="content">
<div class="content-player">
<video-player class="vjs-custom-skin videoPlayer" :options="playerOptions" ></video-player>
</div>
<div class="content-info">
<div class="content-info_title">
{{contentData.streamTitle || 'loading'}}
</div>
</div>
<v-divider></v-divider>
<div class="content-author">
<div class="content-author_avatar">
<v-avatar
size="56"
>
<v-img
:src="'https://diploma-rtmp-bucket.s3.eu-central-1.amazonaws.com/'+contentData.author[0]._id || ''"
></v-img>
</v-avatar>
</div>
<div class="content-author_name">
{{contentData.author[0].username || 'undefined username'}}
</div>
</div>
</div>
</template>
这是我的页面代码。可能是因为一些 CORS 问题吗?我在本地机器上运行播放器
解决方法
我使用了另一个播放器 vue-vjs-hls。在这个播放器上 hls 运行良好,现在不知道为什么 hls 源在 vue-video-player 和 video.js 上不起作用。有什么奇怪的,因为 vue-vjs-hls 使用 video.js 作为核心。