VUE VideoJs支持m3u8格式視頻


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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM