-
前言
這兩天在寫跟視頻有關的內(nèi)容。要支持播放mp4和直播流。網(wǎng)上大都推薦vue-video-player,所以也用了這個??墒侵虚g遇到了很多問題
印象最深的是這個:
- 直播流 引用videojs-contrib-hls后控制臺一直報錯EventTarget undefined
- hls直播流報錯 CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED
然后,參考了大神的這個例子vue-video-player demo
注意:
當你的項目按照大神的例子報錯的時候,卸載package.json中所有的video相關的插件,重新安裝,然后重啟,就可以了。
-
本人實踐成功的步驟:親測有用
前提條件:安裝了npm vue
安裝node及npm https://nodejs.org/en/download/
全局安裝vue腳手架 npm install -g vue-cli
1. 創(chuàng)建項目
vue init webpack my-vvp (my-vvp是你的項目名,可以自定義)
// 過程中會讓輸入一些項目名、作者等,可以直接enter鍵,
// 但是注意, 在詢問是否使用eslint 開始,我就輸入了n(代表no),因為我不會用這些
// 完成后,會自動提示接下來執(zhí)行的步驟:
cd my-vvp
npm run dev

創(chuàng)建操作.png
2. 安裝插件
npm install vue-video-player -s
npm install videojs-contrib-hls.js -s
npm install sass-loader -s
// 安裝sass-loader是因為萬一你項目中要寫css,如果只是看視頻的話,可以不安裝
// 安裝完sass-loader后,在 build--webpack.base.conf.js中大概32行的module對象中配置css代碼:
{
test: /\.scss$/,
loaders: ['style', 'css', 'sass']
}
3. 配置main.js
import VideoPlayer from 'vue-video-player'
Vue.use(VideoPlayer)
4. 編寫vue頁面
// 可以直接在components的HelloWorld.vue里面寫,也可以src中任意地方新建vue頁面來寫,下面是vue頁面的完整代碼
// 注意三個import引用即可
<template>
<div class="player-container">
<video-player class="vjs-custom-skin" :options="playerOptions"></video-player>
</div>
</template>
<script>
//引入video樣式
import 'video.js/dist/video-js.css'
import 'vue-video-player/src/custom-theme.css'
//引入hls.js
import 'videojs-contrib-hls.js/src/videojs.hlsjs'
export default {
name:'HelloWorld',
data () {
return {
playerOptions: {
playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度
autoplay: false, //如果true,瀏覽器準備好時開始回放。
controls: true, //控制條
preload: 'auto', //視頻預加載
muted: false, //默認情況下將會消除任何音頻。
loop: false, //導致視頻一結(jié)束就重新開始。
language: 'zh-CN',
aspectRatio: '16:9', // 將播放器置于流暢模式,并在計算播放器的動態(tài)大小時使用該值。值應該代表一個比例 - 用冒號分隔的兩個數(shù)字(例如"16:9"或"4:3")
fluid: true, // 當true時,Video.js player將擁有流體大小。換句話說,它將按比例縮放以適應其容器。
sources: [{
type: 'application/x-mpegURL',
src: 'https://video-dev.github.io/streams/x36xhzz/x36xhzz.m3u8'
}],
poster: "http://static.smartisanos.cn/pr/img/video/video_03_cc87ce5bdb.jpg", //你的封面地址
width: document.documentElement.clientWidth,
notSupportedMessage: '此視頻暫無法播放,請稍后再試' //允許覆蓋Video.js無法播放媒體源時顯示的默認信息。
}
}
},
methods: {
},
computed: {
}
}
</script>
5. 完成

image.png