1. 概述
1.1 說明
PC項目中的經常會有視頻播放功能,播放一些課程視頻或者直播回放等;而h5的video標簽支持的視頻格式為MP4、WebM、Ogg;而有些視頻的格式為m3u8,此時需要使用video.js插件進行處理。
1.1.1 備注
m3u8是一種基於HTTP Live Streaming文件視頻格式(直播流),它主要是存放整個視頻的基本信息和分片(Segment)組成。目前由Apple.inc率先提出的HLS協議在Mac的Safari上原生支持【蘋果提出HLS協議】;故其本身不兼容瀏覽器(如谷歌、IE等)播放;而video.js支持多平台播放,而且其下插件videojs-contrib-hls可對m3u8進行兼容瀏覽器播放處理;即videojs配合videojs-contrib-hls.js可以實現調用flash播放器播放hls。
1.2 安裝插件
npm install video.js --save
npm install videojs-contrib-hls --save
1.3 使用
頁面.vue中引入(videojs對應的css文件使用過程中直接進入報錯,單獨拷貝出把項目中不支持樣式進行注釋,然后在css中通過@import引入):
import videojs from 'video.js'
import 'videojs-contrib-hls'
2. 代碼
2.1 頁面處理
<template> <div> <video id="refVideoJsItem" ref="refVideoJsItem" class="video-js vjs-default-skin box" controls muted preload="auto"> <source :src="videoSrc" type="application/x-mpegURL"> </source> </video> </div> </template>
2.2 邏輯處理
- 引入videojs-contrib-hls是針對於PC端的視頻播放
<script> import videojs from 'video.js/dist/video.js' import 'videojs-contrib-hls' export default { name: 'VideoJsItem', props: { videoSrc: { type: String, default: '', }, }, mounted() { this.$nextTick(() => { videojs('refVideoJsItem', { bigPlayButton: false, textTrackDisplay: false, posterImage: true, errorDisplay: false, controlBar: true, }, function () { this.play() }) }) }, } </script>
2.3 樣式處理
- 單獨引入videojs.css文件是因為工程中不能正確編譯出video.js插件對應的樣式文件,若vue工程編譯無問題則可對此單獨引用忽略
<style> @import url('./assets/css/videojs.css'); </style> <style scoped> .box { width: 900px; height: 506px; } </style>