vue中音頻wavesurfer.js的使用方法
更新時(shí)間:2020年02月20日 14:11:24 作者:說好樂卟見麵
這篇文章主要為大家詳細(xì)介紹了vue中音頻wavesurfer.js的使用方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文為大家分享了vue中音頻wavesurfer.js的使用方法,供大家參考,具體內(nèi)容如下
效果圖
首先引入wavesurfer.js
其次 封裝 wavesurfer.js`
<template> <div class="waveformOuter"> <div id="waveform" ref="waveform" /> <div class="play" @click="playMusic"> <svg-icon v-if="!isPlaying" icon-class="play" class="icon myplay" /> <svg-icon v-else icon-class="stop" class="icon mystop" /> <p>{{ time }}</p> </div> <!-- <p>{{ url }}</p> --> </div> </template> <script> import WaveSurfer from '@/assets/js/wavesurfer' export default { props: ['url', 'toStopMusic', 'loadWave'], data() { return { isPlaying: false, time: '00:00', wavesurfer: null, } }, watch: { 'loadWave': function() { this.loadMusic() }, 'url': function() { // return this.wavesurfer.getCurrentTime() this.loadMusic(true) console.log('url---------------------------------------') }, 'toStopMusic': function() { console.log('toStopMusic---------------------------------------') if (this.wavesurfer) { this.wavesurfer.pause() } } }, mounted() { this.$nextTick(() => { if (this.loadWave) { console.log('haha') this.loadMusic() } }) }, methods: { itemClick(node) { console.log(node.model.id) }, buZero(num) { return num > 9 ? num : '0' + num }, loadMusic(bool) { console.log('this.WaveSurfer--------------------------------------', WaveSurfer) if (this.wavesurfer) { if (bool) { this.time = '00:00' this.wavesurfer.load(this.url) } } else { this.wavesurfer = WaveSurfer.create({ container: this.$refs.waveform, waveColor: 'violet', progressColor: 'purple' }) this.wavesurfer.load(this.url) this.wavesurfer.on('ready', () => { // this.wavesurfer.play() }) this.wavesurfer.on('audioprocess', (e) => { const times = Math.floor(e) this.time = this.buZero(Math.floor(times / 60)) + ':' + this.buZero(times % 60) }) this.wavesurfer.on('finish', () => { this.isPlaying = false }) } }, stopMusic(){ if (this.wavesurfer) { this.wavesurfer.stop(); } }, playMusic() { console.log("開始") console.log(this.wavesurfer) console.log("點(diǎn)擊開始播放按鈕",this.url) if (this.wavesurfer) { if (this.wavesurfer.isPlaying()) { this.isPlaying = false debugger this.wavesurfer.pause() } else { this.isPlaying = true this.wavesurfer.play() } } } } } </script> <!-- Add "scoped" attribute to limit CSS to this component only --> <style scoped> .myplay{ position: absolute; top: 50%; font-size: 17px; margin: -10px 0 0 -9px; left: 50%; } .mystop{ position: absolute; top: 50%; margin: -15px 0 0 -18px; left: 50%; font-size: 25px; } #waveform{ width: calc(100% - 150px); height:128px; float: left; margin-right: 22px; background: black; } .play{ position: relative; width: 128px; height:128px; border-radius:3px; background-color:#EBEEF5; float: left; text-align: center; } .play p{ margin-top: 85px; color: #3683FA; } .waveformOuter{ margin-bottom: 20px; overflow: hidden; } </style>
再然后 在需要的組件中引入
<div class="luyin" v-if="this.isYinyin"> <!-- {{this.isYinyin}} --> <my-wave-sufer ref="handleDialogClose" :url="luyinUrl" :load-wave="showDialog" :to-stop-music="!showDialog" /> </div> isYinyin: false,//是否加載錄音組件 showDialog: true, //是否初始化錄音組件 luyinUrl: "", //錄音url 數(shù)據(jù)庫錄音格式 123.wav
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
vue?element-ui?Radio單選框默認(rèn)值選不中的原因:混用字符和數(shù)字問題
這篇文章主要介紹了vue?element-ui?Radio單選框默認(rèn)值選不中的原因:混用字符和數(shù)字問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12Vue動(dòng)態(tài)綁定class、style、background的方式
文章主要介紹了在Vue.js中如何使用動(dòng)態(tài)綁定class、style和background來實(shí)現(xiàn)動(dòng)態(tài)樣式和背景圖的設(shè)置,通過v-bind指令,可以靈活地根據(jù)數(shù)據(jù)變化來動(dòng)態(tài)更新元素的樣式和背景2025-01-01詳解Vue 數(shù)據(jù)更新了但頁面沒有更新的 7 種情況匯總及延伸總結(jié)
這篇文章主要介紹了詳解Vue 數(shù)據(jù)更新了但頁面沒有更新的 7 種情況匯總及延伸總結(jié),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-05-05vue2.x數(shù)組劫持原理的實(shí)現(xiàn)
這篇文章主要介紹了vue2.x數(shù)組劫持原理的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04