前端vue播放m3u8、flv、mp4視頻的方法示例
1、播放m3u8格式視頻
安裝依賴
npm install video.js --save // 視頻播放器插件 npm install videojs-contrib-hls --save // 播放hls流插件
頁面引入插件
import videojs from "video.js"; import "video.js/dist/video-js.css";
頁面中的使用
<template> <div class="myVideo"> <video id="videoPlayer" class="video-js vjs-default-skin" controls playsinline autoplay="autoplay" width="500px"> <source :src="attachmentLink" type="application/x-mpegURL" /> </video> </div> </template> <script> import videojs from "video.js"; import "video.js/dist/video-js.css"; export default { data() { return { dp: null, options: { playbackRates: [0.7, 1.0, 1.5, 2.0], //播放速度 aspectRatio:'16:9', notSupportedMessage: '此視頻暫無法播放,請稍后再試', //允許覆蓋Video.js無法播放媒體源時(shí)顯示的默認(rèn)信息。 autoplay: false, // 設(shè)置自動(dòng)播放 muted: true, // 設(shè)置了它為true,才可實(shí)現(xiàn)自動(dòng)播放,同時(shí)視頻也被靜音(Chrome66及以上版本,禁止音視頻的自動(dòng)播放) preload: "auto", // 預(yù)加載 controls: true, // 顯示播放的控件 }, attachmentLink: "https://e-sign.dms.t.cn-np.com/files/m3u8_file/c4b94118-3c8d-4410-9987-985c2b44c278/c4b94118-3c8d-4410-9987-985c2b44c278.m3u8", }; }, mounted() { // 使用 $nextTick 解決vedio報(bào)錯(cuò) The element or ID supplied is not valid. (videojs) this.$nextTick(() => { this.loadVideo(); }); }, methods: { loadVideo() { this.dp = videojs("videoPlayer", this.options); // 也可以使用以下方式給vedio設(shè)置 src // this.db.src([ // { // src: "https://e-sign.dms.t.cn-np.com/files/m3u8_file/c4b94118-3c8d-4410-9987-985c2b44c278/c4b94118-3c8d-4410-9987-985c2b44c278.m3u8", // 地址 // type: "application/x-mpegURL", // 告訴videojs,這是一個(gè)hls流 // }, // ]); }, // 銷毀 beforeDestroy() { if (this.dp) { this.dp.dispose(); // dispose()會(huì)直接刪除Dom元素 } }, }, }; </script> <style lang="less" scoped> .video-box { width: 100%; max-width: 500px; max-height: 500px; } // 暫停播放按鈕居中 ::v-deep .video-js .vjs-big-play-button { top: 50%; left: 50%; transform: translate(-50%, -50%); } </style>
2、flv格式的方案來播放視頻
簡介:flv.js是 HTML5 Flash 視頻(FLV)播放器,純原生 JavaScript 開發(fā),沒有用到 Flash。由 bilibili 網(wǎng)站開源。
開源地址: https://github.com/Bilibili/flv.js/
安裝依賴
npm install --save flv.js
頁面引入插件
import flvjs from 'flv.js'
頁面中的使用
<template> <div class="preview"> <div class="videoArea"> <video id="videoElement" crossOrigin="anonymous" controls autoplay muted width="100%" height="800px"></video> </div> </div> </template> <script> import flvjs from 'flv.js' export default { data() { return { isPlay: false, player: null, }; }, methods: { // 設(shè)置視頻配置(注意:createVideo應(yīng)放在異步函數(shù)里或mounted之后,不可在created里直接加載,否則不生效) createVideo() { if (flvjs.isSupported()) { var videoElement = document.getElementById('videoElement'); this.player= flvjs.createPlayer({ type: 'flv', isLive: true, hasAudio: false, url: 'https://sf1-hscdn-tos.pstatp.com/obj/media-fe/xgplayer_doc_video/flv/xgplayer-demo-360p.flv' // 自己的flv視頻流 },{ cors: true, // 是否跨域 // enableWorker: true, // 是否多線程工作 enableStashBuffer: false, // 是否啟用緩存 stashInitialSize: 128, // 緩存大小(kb) 默認(rèn)384kb autoCleanupSourceBuffer: true // 是否自動(dòng)清理緩存 }); this.player.attachMediaElement(videoElement);//掛載元素 this.player.load();//加載流 this.player.play();//播放流 } // 報(bào)錯(cuò)重連 this.player.on(flvjs.Events.ERROR, (err, errdet) => { // 參數(shù) err 是一級(jí)異常,errdet 是二級(jí)異常 if (err == flvjs.ErrorTypes.MEDIA_ERROR) { console.log('媒體錯(cuò)誤') if(errdet == flvjs.ErrorDetails.MEDIA_FORMAT_UNSUPPORTED) { console.log('媒體格式不支持') } } if (err == flvjs.ErrorTypes.NETWORK_ERROR) { console.log('網(wǎng)絡(luò)錯(cuò)誤') if(errdet == flvjs.ErrorDetails.NETWORK_STATUS_CODE_INVALID) { console.log('http狀態(tài)碼異常') } } if(err == flvjs.ErrorTypes.OTHER_ERROR) { console.log('其他異常:', errdet) } if (this.player) { this.destoryVideo() this.createVideo() } }) }, destoryVideo(){ if (this.player) { this.player.pause();// 暫停播放數(shù)據(jù)流 this.player.unload();// 取消數(shù)據(jù)流加載 this.player.detachMediaElement();// 將播放實(shí)例從節(jié)點(diǎn)中取出 this.player.destroy(); // 銷毀播放實(shí)例 this.player= null; } } }, mounted() { this.$nextTick(() => { this.createVideo() }) }, beforeDestroy() { this.destoryVideo() }, }; </script> <style lang="scss" scoped> </style>
3、mp4格式的方案來播放視頻
<html> <head> <title>camera</title> <script type="text/javascript"> function play() { var video = document.getElementById("video"); video.play(); } </script> </head> <body> <video id="video" width="640" height="360" poster="/video/cover.png"http:// 視頻封面 controls //顯示標(biāo)準(zhǔn)的 HTML5 視頻/音頻播放器控制條、控制按鈕。 autoplay //讓文件自動(dòng)播放。 loop //讓文件循環(huán)播放。 preload="auto" //屬性是用來緩存大體積文件的。它有三個(gè)可選值:"none" 不緩存、"auto" 緩存、"metadata" 只緩存文件元信息 playsinline="true" // IOS微信瀏覽器支持小窗內(nèi)播放 webkit-playsinline="true" // 這個(gè)屬性是ios 10中設(shè)置可以讓視頻在小窗內(nèi)播放,也就是不是全屏播放*/ x5-video-player-type="h5" // 啟用H5播放器,是wechat安卓版特性 x5-video-player-fullscreen="true" // 全屏設(shè)置,設(shè)置為 true 是防止橫屏 x5-video-orientation="portraint" // 播放器屏幕的方向,landscape橫屏,portraint豎屏,默認(rèn)值為豎屏。、、 οnclick="play()" > <!-- 標(biāo)簽是為了能夠兼容各種瀏覽器對不同媒體類型的支持,我們可以用多個(gè)<source></source>元素來提供多個(gè)不同的媒體類型。支持mp4格式視頻流的瀏覽器可以播放mp4文件,如果不支持,可以播放Ogg文件。 --> <!-- codecs=dirac, speex - 是用來指定播放使用的解碼器(codecs); 這樣就可以更精確的讓瀏覽器如何播放提供的視頻。 --> <source src="/video/text.mp4" type="video/mp4"> <source src="/video/text.ogg" type="video/ogg; codecs=dirac, speex"> <div class="fallback"> <p>You must have an HTML5 capable browser.</p> </div> </video> </body> </html>
總結(jié)
到此這篇關(guān)于前端vue播放m3u8、flv、mp4視頻的文章就介紹到這了,更多相關(guān)vue播放m3u8、flv、mp4視頻內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
element多選表格中使用Switch開關(guān)的實(shí)現(xiàn)
當(dāng)在做后臺(tái)管理系統(tǒng)的時(shí)候,會(huì)用到用戶的狀態(tài)管理這個(gè)功能,本文主要介紹了element多選表格中使用Switch開關(guān)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07vue 運(yùn)用mock數(shù)據(jù)的示例代碼
本篇文章主要介紹了vue 運(yùn)用mock數(shù)據(jù)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-11-11vite打包優(yōu)化CDN壓縮的分析實(shí)現(xiàn)
我們在日常的工作中肯定會(huì)遇到項(xiàng)目打包優(yōu)化等問題,本文主要介紹了vite打包優(yōu)化CDN壓縮的分析實(shí)現(xiàn),具有一定的參加價(jià)值,感興趣的可以了解一下2024-07-07詳解Vue2+Echarts實(shí)現(xiàn)多種圖表數(shù)據(jù)可視化Dashboard(附源碼)
本篇文章主要介紹了詳解Vue2+Echarts實(shí)現(xiàn)多種圖表數(shù)據(jù)可視化Dashboard(附源碼),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03element plus中el-upload實(shí)現(xiàn)上傳多張圖片的示例代碼
最近寫項(xiàng)目的時(shí)候需要一次上傳多張圖片,本文主要介紹了element plus中el-upload實(shí)現(xiàn)上傳多張圖片的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)2
這篇文章主要介紹了Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)的相關(guān)資料,實(shí)現(xiàn)Observer構(gòu)造函數(shù),監(jiān)聽已有數(shù)據(jù)data中的所有屬性,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-01-01