欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

前端vue播放m3u8、flv、mp4視頻的方法示例

 更新時(shí)間:2023年07月20日 11:12:20   作者:NIshihara  
這篇文章主要給大家介紹了關(guān)于前端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)文章

  • Vue.js上傳圖片到阿里云OSS存儲(chǔ)的方法示例

    Vue.js上傳圖片到阿里云OSS存儲(chǔ)的方法示例

    這篇文章主要介紹了Vue.js上傳圖片到阿里云OSS存儲(chǔ)的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-12-12
  • vue2實(shí)現(xiàn)傳送門效果的示例

    vue2實(shí)現(xiàn)傳送門效果的示例

    本文主要介紹了vue2實(shí)現(xiàn)傳送門效果的示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • element多選表格中使用Switch開關(guān)的實(shí)現(xià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-07
  • vue 運(yùn)用mock數(shù)據(jù)的示例代碼

    vue 運(yùn)用mock數(shù)據(jù)的示例代碼

    本篇文章主要介紹了vue 運(yùn)用mock數(shù)據(jù)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-11-11
  • vite打包優(yōu)化CDN壓縮的分析實(shí)現(xiàn)

    vite打包優(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(附源碼)

    本篇文章主要介紹了詳解Vue2+Echarts實(shí)現(xiàn)多種圖表數(shù)據(jù)可視化Dashboard(附源碼),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-03-03
  • Vue2和Vue3的雙向數(shù)據(jù)綁定原理分析

    Vue2和Vue3的雙向數(shù)據(jù)綁定原理分析

    Vue2.x通過Object.defineProperty()實(shí)現(xiàn)響應(yīng)式系統(tǒng),但存在一些限制,如不能檢測新增和刪除的屬性、深層嵌套對象性能開銷大等,Vue3.0引入Proxy,可以更高效地?cái)r截對象操作,解決這些問題
    2025-02-02
  • Vue如何將頁面導(dǎo)出成PDF文件

    Vue如何將頁面導(dǎo)出成PDF文件

    這篇文章主要為大家詳細(xì)介紹了Vue如何將頁面導(dǎo)出成PDF文件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • element plus中el-upload實(shí)現(xiàn)上傳多張圖片的示例代碼

    element plus中el-upload實(shí)現(xiàn)上傳多張圖片的示例代碼

    最近寫項(xiàng)目的時(shí)候需要一次上傳多張圖片,本文主要介紹了element plus中el-upload實(shí)現(xiàn)上傳多張圖片的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Vue數(shù)據(jù)驅(qū)動(dòng)模擬實(shí)現(xiàn)2

    Vue數(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

最新評(píng)論