欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue直播播放器mpegts.js使用方法詳解

 更新時間:2025年06月16日 10:59:49   作者:travel_wsy  
mpegts.js是在HTML5上直接播放MPEG-TS/FLV流的播放器,針對低延遲直播優(yōu)化,這篇文章主要介紹了vue直播播放器mpegts.js使用的相關資料,文中通過代碼介紹的非常詳細,需要的朋友可以參考下

前言

要播放flv格式的視頻流,最先想到的是flv.js,但是flv.js已經(jīng)停止維護幾年了,不過在flv.js官網(wǎng)提到用mpegts.js代替flv.js,本章主要記錄一下mpegts.js的使用:mpegts.js Api

一、介紹mpegts.js

1、方法:

//創(chuàng)建播放器 
createPlayer(mediaDataSource: Mpegts.MediaDataSource, config?: Mpegts.Config): Mpegts.Player;
//判斷瀏覽器是否支持播放 
isSupported(): boolean;
//獲取播放器特征列表(這個方法我這里沒用,就不過多介紹了,有需要的可以查看官方文檔)
 getFeatureList(): Mpegts.FeatureList;

2、實例

mediaDataSource:

名稱類型說明

type

string

支持媒體類型:'mse''mpegts''m2ts''flv' or 'mp4'

isLive

boolean

是否直播

cors

boolean

是否啟用cors對http進行提前

withCredentials

boolean

是否啟用cookie對http進行提前

hasAudio

boolean

是否有音頻軌道

hasVideo

boolean

是否有視頻軌道

duration

number

媒體持續(xù)時間(單位毫秒)

filesize

number

媒體大小

url

string

播放地址:支持http(s)或者ws(s)

config:

名稱類型說明

isLive

boolean

是否開啟直播,和mediaDataSource中的

isLive一樣

liveBufferLatencyChasing

boolean

開啟追幀,減小延遲

liveBufferLatencyMaxLatency

number

最大緩沖延遲,默認1.5s

liveBufferLatencyMinRemain

number

最小緩沖延遲,默認0.5s

 這個就寫這幾個用到的,其他的可以到文檔中查看

播放器

interface Player {
        destroy(): void;//銷毀播放器
        on(event: string, listener: (...args: any[]) => void): void;//添加監(jiān)聽
        off(event: string, listener: (...args: any[]) => void): void;//取消監(jiān)聽
        attachMediaElement(mediaElement: HTMLMediaElement): void;//綁定dom
        detachMediaElement(): void;//移除dom
        load(): void;//加載播放器
        unload(): void;//取消播放器加載
        play(): Promise<void> | void;//開始播放
        pause(): void;//暫停播放
    }

枚舉

interface Events {
        ERROR: string;//播放中發(fā)生錯誤
        LOADING_COMPLETE: string;//緩沖完成
        RECOVERED_EARLY_EOF: string;//緩沖期間發(fā)生意外的網(wǎng)絡EOF,但已自動恢復
        MEDIA_INFO: string;//提供媒體的技術信息,如視頻/音頻編解碼器、比特率等。
        METADATA_ARRIVED: string;//提供FLV文件(流)可以包含的元數(shù)據(jù)
        SCRIPTDATA_ARRIVED: string;//提供FLV文件(流)可以包含的腳本數(shù)據(jù)
        STATISTICS_INFO: string;//提供播放統(tǒng)計信息,如丟幀、當前速度等
    }

二、使用

1、安裝

npm install mpegts.js

yarn add mpegts.js

2、引用

import mpegtsjs from 'mpegts.js'

3、創(chuàng)建播放器

import mpegtsjs from 'mpegts.js'
export default {
  data() {
    return {
      isPlaying: false, // 判斷是否正在播放直播
      notSpeedCount: 0,//記錄播放速度為0的次數(shù)
      flvVideo: null, //播放器
    }
  },
  methods: {
    //初始化播放器
    async initVideo(url, videoId) {
      if (!videoId || !url) return
      let that = this;
      const videoElement = document.getElementById(videoId)
      let flvPlayer = mpegtsjs.createPlayer({
        type: 'flv',
        url: url,
        isLive: true,
        cors: true,
        withCredentials: false,
        hasVideo: true,
        hasAudio: false,
        nativeMP4H264Playback: true,
      }, {
        liveBufferLatencyChasing: true, //追幀
      })
      flvPlayer.attachMediaElement(videoElement)
      flvPlayer.load()
      await flvPlayer.play()
      this.flvVideo = flvPlayer
      //監(jiān)聽播放器發(fā)生錯誤
      flvPlayer.on(
        mpegtsjs.Events.ERROR,
        (errorType, errorDetail, errorInfo) => {
          console.log(
            '類型:' + errorType,
            '報錯內(nèi)容' + errorDetail,
            '報錯信息' + JSON.stringify(errorInfo)
          )
        }
      )
      //監(jiān)聽播放信息,該方法會持續(xù)調用
      flvPlayer.on(mpegtsjs.Events.STATISTICS_INFO, (e) => {
        //當播放速度為0時,記錄一下為0的次數(shù),達到一定次數(shù)時,刷新播放器,重新拉取視頻流;偶爾卡頓一下不用處理,這里要處理的是長時間拉取不到流,防止鏈接斷開
        if (e.speed == 0) {
          console.log('直播信息:' + JSON.stringify(e))
          if (that.notSpeedCount > 10) {
            that.notSpeedCount = 0
            that.refreshVideo(url,videoId)
            that.isPlaying = false
          } else {
            that.notSpeedCount += 1
          }
        } else {
          if (!that.isPlaying) {
            that.isPlaying = true
            flvPlayer.play()
          }
          that.notSpeedCount = 0
        }
      })
    },
    //銷毀
    destoryVideo() {
      if (this.flvVideo) {
        this.flvVideo.pause()
        this.flvVideo.unload()
        this.flvVideo.detachMediaElement()
        this.flvVideo.destroy()
        this.flvVideo = null
      }
    },
    //刷新播放器
    refreshVideo(url,videoId) {
      if(!url || !videoId) return
      this.destoryVideo()
      setTimeout(() => {
        this.initVideo(url,videoId)
      }, 500);
    }
  },
}

總結 

到此這篇關于vue直播播放器mpegts.js使用方法的文章就介紹到這了,更多相關vue直播播放器mpegts.js內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • element-ui中el-cascader動態(tài)加載和默認值詳解

    element-ui中el-cascader動態(tài)加載和默認值詳解

    vue+elementUI項目中el-cascader級聯(lián)選擇器使用頻率非常高,下面這篇文章主要給大家介紹了關于element-ui中el-cascader動態(tài)加載和默認值的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • vue中beforeRouteLeave實現(xiàn)頁面回退不刷新的示例代碼

    vue中beforeRouteLeave實現(xiàn)頁面回退不刷新的示例代碼

    這篇文章主要介紹了vue中beforeRouteLeave實現(xiàn)頁面回退不刷新的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • Vue2遷移Rsbuild詳細步驟

    Vue2遷移Rsbuild詳細步驟

    Rsbuild,一個基于Rspack的高效Web構建工具,將Rspack的強大功能與易用性相結合,是你項目搭建的不二之選,Rsbuild不僅提供了開箱即用的體驗,還引入了高性能的構建機制,本文給大家介紹了Vue2遷移Rsbuild詳細步驟,需要的朋友可以參考下
    2024-10-10
  • vue中如何實現(xiàn)變量和字符串拼接

    vue中如何實現(xiàn)變量和字符串拼接

    這篇文章主要介紹了vue中如何實現(xiàn)變量和字符串拼接,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-06-06
  • Vue3中的defineExpose函數(shù)用法深入解析

    Vue3中的defineExpose函數(shù)用法深入解析

    這篇文章主要介紹了Vue3中的defineExpose函數(shù)用法的相關資料,defineExpose是Vue3中用于在模式下暴露組件內(nèi)部屬性和方法的輔助函數(shù),它允許父組件通過ref訪問子組件的暴露內(nèi)容,提高組件間的交互能力并保持封裝性,需要的朋友可以參考下
    2025-01-01
  • 最簡單的vue消息提示全局組件的方法

    最簡單的vue消息提示全局組件的方法

    這篇文章主要介紹了最簡單的vue消息提示全局組件的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • vue3 攜帶參數(shù)跳轉|router傳參方式

    vue3 攜帶參數(shù)跳轉|router傳參方式

    這篇文章主要介紹了vue3 攜帶參數(shù)跳轉|router傳參方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-06-06
  • Vue中的table表單切換實現(xiàn)效果

    Vue中的table表單切換實現(xiàn)效果

    這篇文章主要介紹了Vue中的table表單切換實現(xiàn)效果,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • vue中數(shù)據(jù)不響應的問題及解決

    vue中數(shù)據(jù)不響應的問題及解決

    這篇文章主要介紹了vue中數(shù)據(jù)不響應的問題及解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 用Vue.js開發(fā)網(wǎng)頁時鐘

    用Vue.js開發(fā)網(wǎng)頁時鐘

    這篇文章主要為大家詳細介紹了用Vue.js開發(fā)一個網(wǎng)頁時鐘,分為白天模式和夜晚模式,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08

最新評論