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

VUE中使用Wavesurfer.js實現(xiàn)可視化音頻波形功能

 更新時間:2025年06月04日 09:13:35   作者:在飄著呢6751  
這篇文章主要介紹了VUE中使用Wavesurfer.js實現(xiàn)可視化音頻波形功能的相關(guān)資料,通過npm安裝、創(chuàng)建組件、傳入音頻路徑參數(shù),并配置波紋顏色、大小等樣式屬性,需要的朋友可以參考下

最近有一個在線音波方法的功能需求,考慮使用Wavesurfer.js來實現(xiàn)這塊

1.首先安裝Wavesurfer.js

npm install wavesurfer.js

2.創(chuàng)建 Wavesurfer 組件

在 Vue 2項目中創(chuàng)建一個音頻播放器組件(如 WaveSurferPlayer.vue),。

<template>
  <div style="padding: 30px">
    <div ref="waveform_Ref" style="cursor: pointer"></div>
    <!-- 時間信息 -->
    <div class="time-info">
      <span
        >當(dāng)前時間:
        <span style="color: #72df90">{{ formatTime(currentTime) }}</span>
      </span>
      <span>總時長: {{ formatTime(duration) }}</span>
    </div>
    <div style="padding: 30px; width: 120px; margin: auto">
      <el-button
        type="success"
        icon="el-icon-video-play"
        @click="playMusic"
        circle
        v-if="!playing"
      >
      </el-button
      ><el-button
        v-if="playing"
        type="danger"
        icon="el-icon-video-pause"
        circle
        @click="playMusic"
      >
      </el-button>
    </div>
  </div>
</template>

<script>
import WaveSurfer from "wavesurfer.js";

export default {
  name: "WaveSurferPlayer",
  props: {
    audioSrc: {
      type: String,
      required: true,
    },
  },
  data() {
    return {
      wavesurfer: null,
      playing: false,
      duration: 0,
      currentTime: 0, // 當(dāng)前播放時間
    };
  },
  mounted() {
    this.$nextTick(() => {
      this.wavesurfer = WaveSurfer.create({
        // 波形圖的容器
        container: this.$refs.waveform_Ref,
        // 已播放波形的顏色
        progressColor: "#13ce66",
        // 未播放波形的顏色
        // waveColor: "lightgrey",
        // 波形圖的高度,單位為px
        // height: 10,
        // 是否顯示滾動條,默認為false
        scrollParent: true,
        // 波形的振幅(高度),默認為1
        // barHeight: 0.8,
        // 波形條的圓角
        // barRadius: 2,
        // 波形條的寬度
        // barWidth: 1,
        // 波形條間的間距
        // barGap: 3
        // 播放進度光標條的顏色
        cursorColor: "red",
        // 播放進度光標條的寬度,默認為1
        // cursorWidth: 10,
        // 播放進度顏色
        // progressColor: "blue",
        //  波形容器的背景顏色
        // backgroundColor: "yellow",
        // 音頻的播放速度
        // audioRate: "1",
        // (與區(qū)域插件一起使用)啟用所選區(qū)域的循環(huán)
        // loopSelection:false
      });
      this.wavesurfer.on("error", (error) => {
        console.error("音頻加載失敗:", error);
        this.$message({
          type: "error",
          message: "音頻加載失敗,請檢查文件路徑或網(wǎng)絡(luò)連接",
        });
      });
      this.wavesurfer.load(this.audioSrc);
      // 監(jiān)聽結(jié)束事件
      this.wavesurfer.on("finish", () => {
        this.playing = false;
      });
      // 監(jiān)聽時間更新事件
      this.wavesurfer.on("audioprocess", (time) => {
        this.currentTime = time;
      });
      // 監(jiān)聽暫停事件
      this.wavesurfer.on("pause", () => {
        this.playing = false;
      });
      // 監(jiān)聽音頻加載完成事件
      this.wavesurfer.on("ready", () => {
        this.duration = this.wavesurfer.getDuration();
      });
    });
  },
  methods: {
    // 格式化時間(秒 -> 分:秒)
    formatTime(time) {
      const minutes = Math.floor(time / 60);
      const seconds = Math.floor(time % 60);
      return `${minutes}:${seconds.toString().padStart(2, "0")}`;
    },
    playMusic() {
      this.wavesurfer.playPause.bind(this.wavesurfer)();
      this.playing = !this.playing;
    },
  },
  beforeDestroy() {
    // 銷毀 Wavesurfer 實例
    if (this.wavesurfer) {
      this.wavesurfer.destroy();
    }
  },
};
</script>
<style scoped>
.time-info {
  font-size: 18px;
  color: #666;
}
</style>

3.在頁面中引入組件,audioUrl是音頻路徑,把音頻文件路徑audioUrl子組件傳參進去

       <WaveSurferPlayer :audioSrc="audioUrl" />

4.頁面中顯示樣式,其中波紋顏色,大小等等都可通過配置項設(shè)置

總結(jié) 

到此這篇關(guān)于VUE中使用Wavesurfer.js實現(xiàn)可視化音頻波形功能的文章就介紹到這了,更多相關(guān)VUE Wavesurfer.js可視化音頻波形內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue動態(tài)綁定class的幾種常用方式小結(jié)

    vue動態(tài)綁定class的幾種常用方式小結(jié)

    這篇文章主要介紹了vue動態(tài)綁定class的幾種常用方式,結(jié)合實例形式總結(jié)分析了vue.js常見的對象方法、數(shù)組方法進行class動態(tài)綁定相關(guān)操作技巧,需要的朋友可以參考下
    2019-05-05
  • vue 實現(xiàn)微信浮標效果

    vue 實現(xiàn)微信浮標效果

    微信的浮窗,大伙應(yīng)該都用過,當(dāng)我們正在閱讀一篇公眾號文章時,突然需要處理微信消息,點擊浮窗,在微信上會有個浮標,點擊浮標可以再次回到文章。今天小編抽空給大家介紹vue 實現(xiàn)微信浮標效果,感興趣的朋友一起看看吧
    2019-09-09
  • Vuex子模塊調(diào)用子模塊的actions或mutations實現(xiàn)方式

    Vuex子模塊調(diào)用子模塊的actions或mutations實現(xiàn)方式

    這篇文章主要介紹了Vuex子模塊調(diào)用子模塊的actions或mutations實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 如何巧用Vue.extend繼承組件實現(xiàn)el-table雙擊可編輯(不使用v-if、v-else)

    如何巧用Vue.extend繼承組件實現(xiàn)el-table雙擊可編輯(不使用v-if、v-else)

    這篇文章主要給大家介紹了關(guān)于如何巧用Vue.extend繼承組件實現(xiàn)el-table雙擊可編輯的相關(guān)資料,不使用v-if、v-else,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • Vue生命周期函數(shù)調(diào)用詳解

    Vue生命周期函數(shù)調(diào)用詳解

    這篇文章主要介紹了Vue生命周期函數(shù)調(diào)用詳解,本文將實現(xiàn)Vue生命周期相關(guān)代碼的核心邏輯,從源碼層面來理解生命周期,感興趣的小伙伴可以參考一下
    2022-08-08
  • vue項目的html如何引進public里面的js文件

    vue項目的html如何引進public里面的js文件

    這篇文章主要介紹了vue項目的html如何引進public里面的js文件,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-12-12
  • 基于vue-cli 打包時抽離項目相關(guān)配置文件詳解

    基于vue-cli 打包時抽離項目相關(guān)配置文件詳解

    下面小編就為大家分享一篇基于vue-cli 打包時抽離項目相關(guān)配置文件詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03
  • 解讀vue頁面監(jiān)聽store值改變問題

    解讀vue頁面監(jiān)聽store值改變問題

    這篇文章主要介紹了解讀vue頁面監(jiān)聽store值改變問題,具有很好的參考價值,希望對大家有所幫助。
    2022-10-10
  • 關(guān)于Vue的URL轉(zhuǎn)跳與參數(shù)傳遞方式

    關(guān)于Vue的URL轉(zhuǎn)跳與參數(shù)傳遞方式

    這篇文章主要介紹了關(guān)于Vue的URL轉(zhuǎn)跳與參數(shù)傳遞方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Vue3.0寫自定義指令的簡單步驟記錄

    Vue3.0寫自定義指令的簡單步驟記錄

    Vue中除了內(nèi)置指令,也允許注冊自定義的指令,下面這篇文章主要給大家介紹了關(guān)于Vue3.0寫自定義指令的相關(guān)資料,需要的朋友可以參考下
    2021-06-06

最新評論