中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

fiv.js怎么實現flv文件blob流實時播放

發布時間:2023-04-18 11:05:59 來源:億速云 閱讀:139 作者:iii 欄目:開發技術

本文小編為大家詳細介紹“fiv.js怎么實現flv文件blob流實時播放”,內容詳細,步驟清晰,細節處理妥當,希望這篇“fiv.js怎么實現flv文件blob流實時播放”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

    過程

    1、開端

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

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

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

    簡單瀏覽了下帖子的使用過程,我就打算動手敲了。

    2、出師不利

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

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

    3、峰回路轉--參考舊項目

    由于項目后臺給我們提供了三種視頻流,所以我們的選擇也比較多。

    同時因為是jsp舊項目改造成vue項目,我就想看看之前用的是什么插件,原來是flv.js。

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

    4、flv.js

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

    cnpm i flv.js

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

    <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

    業務是完成了,后續我也看了一下m3u8視頻流的播放。

    1.M3U8文件是指UTF-8編碼格式的M3U文件。M3U文件是記錄了一個索引純文本文件,打開它時播放軟件并不是播放 它,而是根據它的索引找到對應的音視頻文件的網絡地址進行在線播放。
    2.HLS 與 M3U8 HLS(全稱:Http Live Streaming)是由Apple公司定義的用于實時流傳輸的協議
    3.vue項目可采用的hls.js插件+video標簽的形式。

    原生video標簽播放不了,但是我們可以借助hls.js的幫助,實現這個功能。

    cnpm i -s hls.js

    過程也是比較簡單的,video標簽提供一個ref,可供綁定選擇元素就可以了,其他無所謂,hls.js會出手。

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

     <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);
                // 監聽出錯事件
                console.log('加載失敗');
              });
            }
          },
          beforeDestroy() {
            this.videoPause();
          }
        }
      };
    </script>

    6、rtmp流

    基本上rtmp流都是需要flash環境才能播放了,目前市面上的插件可能有部分插件還支持,但是一般都是需要指定瀏覽器,兼容性極差。也有一種方案是自行搭建服務器,服務器轉碼變成圖片,一幀一幀傳給網頁端,缺點是沒有聲音。

    讀到這里,這篇“fiv.js怎么實現flv文件blob流實時播放”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    田林县| 贵州省| 洪湖市| 鄱阳县| 东兴市| 梅州市| 彩票| 邵东县| 津南区| 郧西县| 岚皋县| 长岭县| 巩留县| 手游| 伊春市| 揭阳市| 电白县| 防城港市| 田林县| 肥东县| 宝丰县| 无锡市| 吴江市| 通榆县| 黑山县| 时尚| 乐业县| 通辽市| 九龙城区| 康乐县| 鄢陵县| 博湖县| 宁都县| 南投市| 临沂市| 石家庄市| 巴塘县| 福清市| 自治县| 湖北省| 潜江市|