最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

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

2、實(shí)例

mediaDataSource:

名稱類型說明

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:

名稱類型說明

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)文章

  • Vue.js自定義指令的基本使用詳情

    Vue.js自定義指令的基本使用詳情

    這篇文章主要介紹了Vue.js自定義指令的基本使用詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值需要的小伙伴可以參考一下
    2022-05-05
  • 如何使用vue開發(fā)公眾號(hào)網(wǎng)頁(yè)

    如何使用vue開發(fā)公眾號(hào)網(wǎng)頁(yè)

    因?yàn)轫?xiàng)目需要,近期做了一個(gè)公眾號(hào)網(wǎng)頁(yè)開發(fā)。在此期間也踩了一些坑,解決這些坑之后,準(zhǔn)備對(duì)這個(gè)項(xiàng)目進(jìn)行復(fù)盤。記錄下項(xiàng)目從開發(fā)到上線所解決的問題,并對(duì)使用vue進(jìn)行公眾號(hào)開發(fā)的步驟進(jìn)行一個(gè)總結(jié)。方便以后有問題進(jìn)行查閱。希望對(duì)你有所幫助
    2021-05-05
  • Vue的computed屬性出現(xiàn)突然不更新的原因及解決方案

    Vue的computed屬性出現(xiàn)突然不更新的原因及解決方案

    Vue的computed屬性為何突然不更新,本文深入解析其核心機(jī)制、常見不更新場(chǎng)景及解決方案,涵蓋依賴追蹤、緩存機(jī)制、調(diào)試技巧與Vue3差異,助你高效解決響應(yīng)式問題,需要的朋友可以參考下
    2026-05-05
  • 這15個(gè)Vue指令,讓你的項(xiàng)目開發(fā)爽到爆

    這15個(gè)Vue指令,讓你的項(xiàng)目開發(fā)爽到爆

    這篇文章主要介紹了這15個(gè)Vue指令,讓你的項(xiàng)目開發(fā)爽到爆,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-10-10
  • Vue實(shí)現(xiàn)一個(gè)無限加載列表功能

    Vue實(shí)現(xiàn)一個(gè)無限加載列表功能

    這篇文章主要介紹了Vue實(shí)現(xiàn)一個(gè)無限加載列表功能,需要的朋友可以參考下
    2018-11-11
  • Vue.js 3.x 中的響應(yīng)式數(shù)據(jù)ref 與 reactive詳解

    Vue.js 3.x 中的響應(yīng)式數(shù)據(jù)ref 與 reactive詳解

    ref 和 reactive 是 Vue.js 3 中用于創(chuàng)建響應(yīng)式數(shù)據(jù)的兩個(gè)關(guān)鍵函數(shù),它們分別適用于不同類型的數(shù)據(jù),幫助我們更好地組織和管理組件的狀態(tài),這篇文章主要介紹了Vue.js 3.x 中的響應(yīng)式數(shù)據(jù):ref 與 reactive,需要的朋友可以參考下
    2024-01-01
  • Vue3中導(dǎo)航守衛(wèi)的基本使用方法

    Vue3中導(dǎo)航守衛(wèi)的基本使用方法

    這篇文章主要給大家介紹了關(guān)于Vue3中導(dǎo)航守衛(wèi)的基本使用方法,正如其名vue-router?提供的導(dǎo)航守衛(wèi)主要用來通過跳轉(zhuǎn)或取消的方式守衛(wèi)導(dǎo)航,下面需要的朋友可以參考下
    2023-03-03
  • Springboot運(yùn)用vue+echarts前后端交互實(shí)現(xiàn)動(dòng)態(tài)圓環(huán)圖

    Springboot運(yùn)用vue+echarts前后端交互實(shí)現(xiàn)動(dòng)態(tài)圓環(huán)圖

    我們做項(xiàng)目的時(shí)候,常常需要一些統(tǒng)計(jì)圖來展示我們的數(shù)據(jù),作為web開發(fā)人員,會(huì)實(shí)現(xiàn)統(tǒng)計(jì)圖是我們必會(huì)的技能。我將帶大家來實(shí)現(xiàn)動(dòng)態(tài)餅圖的實(shí)現(xiàn),感興趣的可以了解一下
    2021-06-06
  • 封裝 axios+promise通用請(qǐng)求函數(shù)操作

    封裝 axios+promise通用請(qǐng)求函數(shù)操作

    這篇文章主要介紹了封裝 axios+promise通用請(qǐng)求函數(shù)操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • 基于vue2.0實(shí)現(xiàn)簡(jiǎn)單輪播圖

    基于vue2.0實(shí)現(xiàn)簡(jiǎn)單輪播圖

    這篇文章主要為大家詳細(xì)介紹了基于vue2.0實(shí)現(xiàn)簡(jiǎn)單輪播圖,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11

最新評(píng)論

遂川县| 容城县| 外汇| 卓尼县| 密云县| 龙陵县| 济南市| 满洲里市| 满城县| 马鞍山市| 微博| 康定县| 顺昌县| 渑池县| 临沧市| 九江县| 德钦县| 政和县| 图木舒克市| 高唐县| 西畴县| 庄浪县| 迁西县| 体育| 澄城县| 丹东市| 法库县| 常熟市| 蓬溪县| 龙里县| 德昌县| 马关县| 黄山市| 资讯 | 商水县| 杂多县| 固阳县| 威宁| 凭祥市| 梓潼县| 嘉兴市|