亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

前言

要播放flv格式的視頻流,最先想到的是flv.js,但是flv.js已經(jīng)停止維護(hù)幾年了,不過(guò)在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;
//獲取播放器特征列表(這個(gè)方法我這里沒(méi)用,就不過(guò)多介紹了,有需要的可以查看官方文檔)
 getFeatureList(): Mpegts.FeatureList;

2、實(shí)例

mediaDataSource:

名稱類型說(shuō)明

type

string

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

isLive

boolean

是否直播

cors

boolean

是否啟用cors對(duì)http進(jìn)行提前

withCredentials

boolean

是否啟用cookie對(duì)http進(jìn)行提前

hasAudio

boolean

是否有音頻軌道

hasVideo

boolean

是否有視頻軌道

duration

number

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

filesize

number

媒體大小

url

string

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

config:

名稱類型說(shuō)明

isLive

boolean

是否開啟直播,和mediaDataSource中的

isLive一樣

liveBufferLatencyChasing

boolean

開啟追幀,減小延遲

liveBufferLatencyMaxLatency

number

最大緩沖延遲,默認(rèn)1.5s

liveBufferLatencyMinRemain

number

最小緩沖延遲,默認(rèn)0.5s

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

播放器

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ā)生錯(cuò)誤
        LOADING_COMPLETE: string;//緩沖完成
        RECOVERED_EARLY_EOF: string;//緩沖期間發(fā)生意外的網(wǎng)絡(luò)EOF,但已自動(dòng)恢復(fù)
        MEDIA_INFO: string;//提供媒體的技術(shù)信息,如視頻/音頻編解碼器、比特率等。
        METADATA_ARRIVED: string;//提供FLV文件(流)可以包含的元數(shù)據(jù)
        SCRIPTDATA_ARRIVED: string;//提供FLV文件(流)可以包含的腳本數(shù)據(jù)
        STATISTICS_INFO: string;//提供播放統(tǒng)計(jì)信息,如丟幀、當(dā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ā)生錯(cuò)誤
      flvPlayer.on(
        mpegtsjs.Events.ERROR,
        (errorType, errorDetail, errorInfo) => {
          console.log(
            '類型:' + errorType,
            '報(bào)錯(cuò)內(nèi)容' + errorDetail,
            '報(bào)錯(cuò)信息' + JSON.stringify(errorInfo)
          )
        }
      )
      //監(jiān)聽播放信息,該方法會(huì)持續(xù)調(diào)用
      flvPlayer.on(mpegtsjs.Events.STATISTICS_INFO, (e) => {
        //當(dāng)播放速度為0時(shí),記錄一下為0的次數(shù),達(dá)到一定次數(shù)時(shí),刷新播放器,重新拉取視頻流;偶爾卡頓一下不用處理,這里要處理的是長(zhǎng)時(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);
    }
  },
}

總結(jié) 

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

相關(guān)文章

  • element-ui中el-cascader動(dòng)態(tài)加載和默認(rèn)值詳解

    element-ui中el-cascader動(dòng)態(tài)加載和默認(rèn)值詳解

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

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

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

    Vue2遷移Rsbuild詳細(xì)步驟

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

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

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

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

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

    最簡(jiǎn)單的vue消息提示全局組件的方法

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

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

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

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

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

    vue中數(shù)據(jù)不響應(yīng)的問(wèn)題及解決

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

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

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

最新評(píng)論