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

fiv.js實(shí)現(xiàn)flv文件blob流實(shí)時(shí)播放的項(xiàng)目實(shí)踐

 更新時(shí)間:2023年04月18日 09:14:00   作者:地霊殿__三無  
本文主要介紹了fiv.js實(shí)現(xiàn)flv文件blob流實(shí)時(shí)播放的項(xiàng)目實(shí)踐,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

一、前言

最近遇到個(gè)需求,有個(gè)監(jiān)控視頻需要在網(wǎng)頁實(shí)時(shí)播放,后臺(tái)提供了flv流、m3u8流和rtmp流。

我一聽,這不是小事一樁,前兩年才做過的需求,就隨口應(yīng)了下來。

二、 過程

1、開端

說到實(shí)時(shí)播放,一般都是想到rtmp流,隨便一搜帖子(忘記看帖子時(shí)間了),就能看到以下兩個(gè)插件。

cnpm install video-js -S
cnpm install videojs-flash -S

跟我印象中之前用的一模一樣。

簡(jiǎn)單瀏覽了下帖子的使用過程,我就打算動(dòng)手敲了。

2、出師不利

video-js還是能正常下載的,但到了video-js-flash就一直下載失敗了。

這時(shí)我突然想起2020年12月,谷歌就不再支持flash插件了,這導(dǎo)致許多基于flash實(shí)現(xiàn)的視頻流播放插件都失效,vue-video-player和vue-flash首當(dāng)其沖。

3、峰回路轉(zhuǎn)--參考舊項(xiàng)目

由于項(xiàng)目后臺(tái)給我們提供了三種視頻流,所以我們的選擇也比較多。

同時(shí)因?yàn)槭莏sp舊項(xiàng)目改造成vue項(xiàng)目,我就想看看之前用的是什么插件,原來是flv.js。

這不就是小破站用的技術(shù)嗎,純js開發(fā),沒用到flash,這兼容性肯定更好吧。

4、flv.js

確定了所用插件,接下來的步驟就比較簡(jiǎn)單了,無非就是下載,引入,看例子寫法照著抄就可以了。

cnpm i flv.js

下面提供一下demo,demo里是多個(gè)flv流多窗口播放的方式,如果只有一個(gè)flv需求播放,就簡(jiǎn)化一下就可以了,其他大家隨便看看吧。

<template>
  <div>
    <div id="video-container">
      <div class="video-box" v-for="(video,index) in videoList" :key="index">
        <video :id="'video'+index" ref="videoElement" controls autoplay muted ></video>
      </div>
    </div>
  </div>
</template>
<script>
import flvjs from 'flv.js'
export default {
  data() {
    return {
      videoPlayer: null,
      videoList: [
        {
          src: 'flv視頻流地址'
        }
      ]
    };
  },
  mounted() {
    this.playVideo()
  },
  methods: {
    playVideo(){
        this.vloading = true;
        this.videoList.forEach((item,index) => {
          if (flvjs.isSupported()) {
            let player = null;
            let videoElement = document.getElementById("video" + index);
            player = flvjs.createPlayer({
              type: "flv", //=> 媒體類型 flv 或 mp4
              isLive: true, //=> 是否為直播流
              hasAudio: false, //=> 是否開啟聲音
              url: item.src, //=> 視頻流地址
            });
            player.attachMediaElement(videoElement); //=> 綁DOM
            player.load();
            player.play();

          } else {
            this.$message.error('不支持flv格式視頻')
          }
          this.vloading = false;
        })
      },
  },
};
</script>
<style lang="scss" scoped>
#video-container {
}
</style>

5、hls.js

業(yè)務(wù)是完成了,后續(xù)我也看了一下m3u8視頻流的播放。

1.M3U8文件是指UTF-8編碼格式的M3U文件。M3U文件是記錄了一個(gè)索引純文本文件,打開它時(shí)播放軟件并不是播放 它,而是根據(jù)它的索引找到對(duì)應(yīng)的音視頻文件的網(wǎng)絡(luò)地址進(jìn)行在線播放。
2.HLS 與 M3U8 HLS(全稱:Http Live Streaming)是由Apple公司定義的用于實(shí)時(shí)流傳輸?shù)膮f(xié)議
3.vue項(xiàng)目可采用的hls.js插件+video標(biāo)簽的形式。

原生video標(biāo)簽播放不了,但是我們可以借助hls.js的幫助,實(shí)現(xiàn)這個(gè)功能。

cnpm i -s hls.js

過程也是比較簡(jiǎn)單的,video標(biāo)簽提供一個(gè)ref,可供綁定選擇元素就可以了,其他無所謂,hls.js會(huì)出手。

下面是源碼,挑著用就行了

 <template>
  <section>
    <video class="full-height full-width" ref="video" controls></video>
  </section>
</template>

<script>
  let Hls = require('hls.js');
  export default {
    data() {
      return {
        hls: '',
        src: 'm3u8視頻流地址'
      };
    },
    mounted() {
           this.getStream(src)
    },
    methods: {
      videoPause() {
        if (this.hls) {
          this.$refs.video.pause();
          this.hls.destroy();
          this.hls = null;
        }
      },
      getStream(source) {
        if (Hls.isSupported()) {
          this.hls = new Hls();
          this.hls.loadSource(source);
          this.hls.attachMedia(this.$refs.video);
          this.hls.on(Hls.Events.MANIFEST_PARSED, () => {
            console.log('加載成功');
            this.$refs.video.play();
          });
          this.hls.on(Hls.Events.ERROR, (event, data) => {
            // console.log(event, data);
            // 監(jiān)聽出錯(cuò)事件
            console.log('加載失敗');
          });
        }
      },
      beforeDestroy() {
        this.videoPause();
      }
    }
  };
</script>

6、rtmp流

基本上rtmp流都是需要flash環(huán)境才能播放了,目前市面上的插件可能有部分插件還支持,但是一般都是需要指定瀏覽器,兼容性極差。

也有一種方案是自行搭建服務(wù)器,服務(wù)器轉(zhuǎn)碼變成圖片,一幀一幀傳給網(wǎng)頁端,缺點(diǎn)是沒有聲音。

可能還有其他方案吧,暫時(shí)沒太深究就不得而知了,歡迎討論。

最后

到此這篇關(guān)于fiv.js實(shí)現(xiàn)flv文件blob流實(shí)時(shí)播放的項(xiàng)目實(shí)踐的文章就介紹到這了,更多相關(guān)flv文件blob流實(shí)時(shí)播放內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 一文詳解如何使npm-scripts更好維護(hù)的配置方法

    一文詳解如何使npm-scripts更好維護(hù)的配置方法

    這篇文章主要為大家介紹了如何使npm-scripts更好維護(hù)的配置方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • javascript實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)下拉菜單的方法

    javascript實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)下拉菜單的方法

    這篇文章主要介紹了javascript實(shí)現(xiàn)多級(jí)聯(lián)動(dòng)下拉菜單的方法,通過javascript自定義函數(shù)實(shí)現(xiàn)對(duì)多級(jí)聯(lián)動(dòng)下拉菜單的操作,是非常實(shí)用的技巧,需要的朋友可以參考下
    2015-02-02
  • JS驗(yàn)證碼實(shí)現(xiàn)代碼

    JS驗(yàn)證碼實(shí)現(xiàn)代碼

    本文通過實(shí)例代碼給大家分享基于javascript實(shí)現(xiàn)的驗(yàn)證碼功能,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友參考下吧
    2017-09-09
  • JavaScript定時(shí)器常見用法實(shí)例分析

    JavaScript定時(shí)器常見用法實(shí)例分析

    這篇文章主要介紹了JavaScript定時(shí)器常見用法,結(jié)合實(shí)例形式分析了JavaScript定時(shí)器常見功能、應(yīng)用及相關(guān)操作技巧,需要的朋友可以參考下
    2019-11-11
  • ES6/JavaScript使用技巧分享

    ES6/JavaScript使用技巧分享

    本篇文章主要給大家講解了ES6/JavaScript使用技巧,需要的朋友參考一下吧。
    2017-12-12
  • javascript里使用php代碼實(shí)例

    javascript里使用php代碼實(shí)例

    這篇文章主要介紹了javascript里使用php代碼的方法,以實(shí)例形式展示了javascript與php代碼混編的應(yīng)用技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2014-12-12
  • js修改onclick動(dòng)作的四種方法(推薦)

    js修改onclick動(dòng)作的四種方法(推薦)

    下面小編就為大家?guī)硪黄猨s修改onclick動(dòng)作的四種方法(推薦)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-08-08
  • JS 跳轉(zhuǎn)頁面延遲2種方法

    JS 跳轉(zhuǎn)頁面延遲2種方法

    js跳轉(zhuǎn)頁面想必大家不會(huì)很陌生吧,在瀏覽頁面的時(shí)候經(jīng)常會(huì)碰到這種現(xiàn)象存在如果可以延遲的話是不是會(huì)更委婉一點(diǎn)呢,接下來為大家介紹下如何實(shí)現(xiàn),感興趣的朋友可以參考下哈
    2013-03-03
  • JavaScript+Canvas實(shí)現(xiàn)酷炫的粒子和流星效果

    JavaScript+Canvas實(shí)現(xiàn)酷炫的粒子和流星效果

    這篇文章主要為大家詳細(xì)介紹了如何利用JavaScript和Canvas實(shí)現(xiàn)酷炫的粒子和流星動(dòng)畫效果,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-01-01
  • JavaScript閉包 懂不懂由你反正我是懂了

    JavaScript閉包 懂不懂由你反正我是懂了

    如果你不能向一個(gè)六歲的孩子解釋清楚,那么其實(shí)你自己根本就沒弄懂。好吧,我試著向一個(gè)27歲的朋友就是JS閉包(JavaScript closure)卻徹底失敗了
    2011-10-10

最新評(píng)論

伊通| 龙川县| 武汉市| 永春县| 上犹县| 上饶县| 彰化市| 湘阴县| 绍兴县| 万荣县| 京山县| 荥阳市| 德惠市| 兰考县| 阳春市| 甘洛县| 上虞市| 稷山县| 石屏县| 安国市| 老河口市| 公主岭市| 苗栗市| 南城县| 乐东| 绥德县| 岳阳县| 德惠市| 乌鲁木齐市| 奉新县| 藁城市| 桦南县| 盘锦市| 都安| 崇礼县| 阜宁县| 大丰市| 房山区| 佛坪县| 美姑县| 兴隆县|