vue-video-player視頻播放器使用總結

一、安裝

//5.0.2
npm install vue-video-player -S
videojs-flash  //播放rtmp視頻要安裝
videojs-contrib-hls  //播放m3u8視頻要安裝
我在項目中實時視頻用的是m3u8數(shù)據(jù)流,以上的操作正常視頻格式已經(jīng)可以使用,還不可以直接使用m3u8數(shù)據(jù)流格式,以下是兼容.m3u8格式的視頻操作

1,需要安裝插件videojs-contrib-hls

命令:npm install --save videojs-contrib-hls

2,在main.js里面

const hls =require("videojs-contrib-hls")
Vue.use(hls)

二、引入

可以全局引入插件,也可以在需要用到該插件的組件內(nèi)單獨引入(二選一)
1.全局引用, 在main.js導入并引用

import VideoPlayer from 'vue-video-player'
import 'vue-video-player/src/custom-theme.css'
import 'video.js/dist/video-js.css'
Vue.use(VideoPlayer)

2.組件內(nèi)引用

import { videoPlayer } from 'vue-video-player'
import 'video.js/dist/video-js.css'
export default {
  components: {
    videoPlayer
  }
}

三、使用

1.html playsinline不希望用戶來拖動進度條

  <template>
    <div class='demo'>
      <video-player class="video-player vjs-custom-skin" 
            ref="videoPlayer" 
            :playsinline="true" 
            :options="playerOptions"
            @play="onPlayerPlay($event)"
            @pause="onPlayerPause($event)"
            @ended="onPlayerEnded($event)"
            @waiting="onPlayerWaiting($event)"
            @playing="onPlayerPlaying($event)"
            @loadeddata="onPlayerLoadeddata($event)"
            @timeupdate="onPlayerTimeupdate($event)"
            @canplay="onPlayerCanplay($event)"
            @canplaythrough="onPlayerCanplaythrough($event)"
            @statechanged="playerStateChanged($event)"
            @ready="playerReadied">
      </video-player>
    </div>
  </template>

2.js

    export default {
      data() {
        return {
          playerOptions: {
            playbackRates: [0.5, 1.0, 1.5, 2.0], // 可選的播放速度
            autoplay: false, // 如果為true,瀏覽器準備好時開始回放。
            muted: false, // 默認情況下將會消除任何音頻。
            loop: false, // 是否視頻一結束就重新開始。
            preload: 'auto', // 建議瀏覽器在<video>加載元素后是否應該開始下載視頻數(shù)據(jù)。auto瀏覽器選擇最佳行為,立即開始加載視頻(如果瀏覽器支持)
            language: 'zh-CN',
            aspectRatio: '16:9', // 將播放器置于流暢模式,并在計算播放器的動態(tài)大小時使用該值。值應該代表一個比例 - 用冒號分隔的兩個數(shù)字(例如"16:9"或"4:3")
            fluid: true, // 當true時,Video.js player將擁有流體大小。換句話說,它將按比例縮放以適應其容器。
            sources: [{
              type: "video/mp4", // 類型   type: "application/x-mpegURL"直播流
              src: '' // url地址
            }],
            poster: '', // 封面地址
            notSupportedMessage: '此視頻暫無法播放,請稍后再試', // 允許覆蓋Video.js無法播放媒體源時顯示的默認信息。
            controlBar: {
              timeDivider: true, // 當前時間和持續(xù)時間的分隔符
              durationDisplay: true, // 顯示持續(xù)時間
              remainingTimeDisplay: false, // 是否顯示剩余時間功能
              fullscreenToggle: true // 是否顯示全屏按鈕
            }
          }
        }
      }
    }

3.效果圖

image.png

四、控制播放和暫停

this.$refs.videoPlayer.player.play() // 播放
this.$refs.videoPlayer.player.pause() // 暫停
this.$refs.videoPlayer.player.src(src) // 重置進度條復制代碼

五、回調(diào)函數(shù)

  <template>
    <div class='demo'>
      <video-player class="video-player vjs-custom-skin" 
        ref="videoPlayer" 
        :playsinline="true" 
        :options="playerOptions"
        @play="onPlayerPlay($event)" 
        @pause="onPlayerPause($event)"
        @ended="onPlayerEnded($event)"
        @waiting="onPlayerWaiting($event)"
        @playing="onPlayerPlaying($event)"
        @loadeddata="onPlayerLoadeddata($event)"
        @timeupdate="onPlayerTimeupdate($event)"
        @canplay="onPlayerCanplay($event)"
        @canplaythrough="onPlayerCanplaythrough($event)"
        @statechanged="playerStateChanged($event)"
        @ready="playerReadied"
      >
      </video-player>
    </div>
  </template>

  <script>
    export default {
     methods: {
        // 播放回調(diào) 視頻系列 start
        onPlayerPlay(player) {
          console.log("player play!", player);
        },

        // 暫停回調(diào)
        onPlayerPause(player) {
          console.log("player pause!", player);
        },

        // 視頻播完回調(diào)
        onPlayerEnded($event) {
          console.log(`player`, $event);
        },

        // DOM元素上的readyState更改導致播放停止
        onPlayerWaiting($event) {
          console.log(`player`, $event);
        },

        // 已開始播放回調(diào)
        onPlayerPlaying($event) {
          console.log(`player`, $event);
        },

        // 當播放器在當前播放位置下載數(shù)據(jù)時觸發(fā)
        onPlayerLoadeddata($event) {
          console.log(`player`, $event);
        },

        // 當前播放位置發(fā)生變化時觸發(fā)。
        onPlayerTimeupdate($event) {
          console.log(`player`, $event);
        },

        //媒體的readyState為HAVE_FUTURE_DATA或更高
        onPlayerCanplay(player) {
          console.log("player Canplay!", player);
        },

        //媒體的readyState為HAVE_ENOUGH_DATA或更高。這意味著可以在不緩沖的情況下播放整個媒體文件。
        onPlayerCanplaythrough(player) {
          console.log("player Canplaythrough!", player);
        },

        //播放狀態(tài)改變回調(diào)
        playerStateChanged(playerCurrentState) {
          //   console.log('player current update state', playerCurrentState);
          if (playerCurrentState.timeupdate > 3 * 60 && this.freeBl) {
            this.$refs.videoPlayer.player.pause();
            this.free = this.freeBl;
          }
        },

        //將偵聽器綁定到組件的就緒狀態(tài)。與事件監(jiān)聽器的不同之處在于,如果ready事件已經(jīng)發(fā)生,它將立即觸發(fā)該函數(shù)。。
        playerReadied(player) {
          console.log("example player 1 readied", player);
        },
        // 視頻 end
      }
    }
 </script>

原文作者:匆匆那年_海,博客主頁:http://www.itdecent.cn/u/910c0667c515
95后前端漢子,愛編程、優(yōu)秀、聰明、理性、沉穩(wěn)、智慧的程序猿一枚。

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1、JS的數(shù)據(jù)類型只有浮點型,沒有整型。null,underfined,boolean,number,string...
    6e5e50574d74閱讀 2,493評論 2 1
  • 今天是加入簡書的第一天??旃?jié)奏的生活,讓人與人之間的交流越來越少。每天除了上班就是下班,說的夸張一點,跟重復...
    向陽的小草閱讀 139評論 0 0
  • oclint檢查的感覺更多是代碼規(guī)范方面的內(nèi)容,對邏輯問題的檢查比較弱 所以又引入了facebook的Infer ...
    1234567亂碼閱讀 142評論 0 0
  • 16宿命:用概率思維提高你的勝算 以前的我是風險厭惡者,不喜歡去冒險,但是人生放棄了冒險,也就放棄了無數(shù)的可能。 ...
    yichen大刀閱讀 7,718評論 0 4
  • 公元:2019年11月28日19時42分農(nóng)歷:二零一九年 十一月 初三日 戌時干支:己亥乙亥己巳甲戌當月節(jié)氣:立冬...
    石放閱讀 7,419評論 0 2

友情鏈接更多精彩內(nèi)容