您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“fiv.js怎么實現flv文件blob流實時播放”,內容詳細,步驟清晰,細節處理妥當,希望這篇“fiv.js怎么實現flv文件blob流實時播放”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
說到實時播放,一般都是想到rtmp流,隨便一搜帖子(忘記看帖子時間了),就能看到以下兩個插件。
cnpm install video-js -S cnpm install videojs-flash -S
跟我印象中之前用的一模一樣。
簡單瀏覽了下帖子的使用過程,我就打算動手敲了。
video-js還是能正常下載的,但到了video-js-flash就一直下載失敗了。
這時我突然想起2020年12月,谷歌就不再支持flash插件了,這導致許多基于flash實現的視頻流播放插件都失效,vue-video-player和vue-flash首當其沖。
由于項目后臺給我們提供了三種視頻流,所以我們的選擇也比較多。
同時因為是jsp舊項目改造成vue項目,我就想看看之前用的是什么插件,原來是flv.js。
這不就是小破站用的技術嗎,純js開發,沒用到flash,這兼容性肯定更好吧。
確定了所用插件,接下來的步驟就比較簡單了,無非就是下載,引入,看例子寫法照著抄就可以了。
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>
業務是完成了,后續我也看了一下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>
基本上rtmp流都是需要flash環境才能播放了,目前市面上的插件可能有部分插件還支持,但是一般都是需要指定瀏覽器,兼容性極差。也有一種方案是自行搭建服務器,服務器轉碼變成圖片,一幀一幀傳給網頁端,缺點是沒有聲音。
讀到這里,這篇“fiv.js怎么實現flv文件blob流實時播放”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。