天天看點

videojs vue 動态source_vue項目中使用vuevideoplayer播放m3u8格式視訊

安裝檔案

npm install --save vue-video-player

npm install --save videojs-contrib-hls

理論上安裝這兩個就夠了,但我安裝時給的提示需要再安裝一個:

npm install --save mux.js/lib/mp4/caption-parser

but安裝這一條會報錯

要安裝這個:pm install --save mux.js

引入樣式 

在需要main.js檔案中引入

import VideoPlayer from 'vue-video-player'

import 'vue-video-player/src/custom-theme.css'

import 'video.js/dist/video-js.css'

import hls from 'videojs-contrib-hls'

Vue.use(hls)

videojs vue 動态source_vue項目中使用vuevideoplayer播放m3u8格式視訊

播放頁面的設定 

首先通過FFmpeg(開源多媒體視訊處理軟體),運作批處理指令,将MP4格式的視訊轉為m3u8檔案和ts視訊片段,m3u8檔案是服務端建立的分片TS檔案的索引,浏覽器端請求并解析服務端的m3u8檔案,擷取分片資訊之後,按照順序向服務端請求下載下傳TS分片的檔案,實作視訊的完整播放。

前端使用開源元件vue-video-player播放視訊,引入樣式檔案,需要安裝适合HLS的依賴,即videojs-contrib-hls,視訊檔案的sources[0].types設為application/x-mpegURL,src設為m3u8檔案位址。

      ref="videoPlayer"

      :playsinline="true"

      :options="playerOptions"

      style='width: 1200px;margin:0 auto;height: auto'

    >

    網絡例子

    伺服器result例子

    mp4

export default {

  data() {

    //這裡存放資料

    return {

      playerOptions: {

        playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度

        autoplay: false, //如果true,浏覽器準備好時開始回放。

        muted: false, // 預設情況下将會消除任何音頻。

        loop: false, // 導緻視訊一結束就重新開始。

        preload: "auto", // 建議浏覽器在

        language: "zh-CN",

        aspectRatio: "16:9", // 将播放器置于流暢模式,并在計算播放器的動态大小時使用該值。值應該代表一個比例 - 用冒号分隔的兩個數字(例如"16:9"或"4:3")

        fluid: true, // 當true時,Video.js player将擁有流體大小。換句話說,它将按比例縮放以适應其容器。

        sources: [

          {

            type: "application/x-mpegURL", //這裡的種類支援很多種:基本視訊格式、直播、流媒體等,具體可以參看git網址項目

            src:

              "http://hls01open.ys7.com/openlive/6d499d610a0c4a6182e36ac7dca124ad.m3u8", //url位址

          },

        ],

        // poster: "../../static/images/test.jpg", //你的封面位址

        // width: document.documentElement.clientWidth, //播放器寬度

        hls: true, // 啟用hls?

        notSupportedMessage: "此視訊暫無法播放,請稍後再試", //允許覆寫Video.js無法播放媒體源時顯示的預設資訊。

        controlBar: {

          timeDivider: true,

          durationDisplay: true,

          remainingTimeDisplay: false,

          fullscreenToggle: true, //全屏按鈕

        },

      },

    };

  },

  //監聽屬性 類似于data概念

  computed: {},

  //監控data中的資料變化

  watch: {},

  //方法集合

  methods: {

    test(val){

      if(val==1){

this.playerOptions.sources[0].src = 'http://hls01open.ys7.com/openlive/6d499d610a0c4a6182e36ac7dca124ad.m3u8'

      }

      else if(val==2){

this.playerOptions.sources[0].src = 'http://noncoal.ahutit.com/upload/CourseVideo/202004/result/test.m3u8'

      }

      else{

        this.playerOptions.sources[0].src = '/api/upload/CourseVideo/Video/3-2017年礦業科技大會/4.22葛建立:新型輥壓機在冶金礦山應用的前景分析.mp4'

      }

      console.log(this.playerOptions.sources)

    },

  },

  mounted() {

  },

};

繼續閱讀