溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JS如使用音頻可視化插件Wavesurfer.js

發(fā)布時(shí)間:2021-08-10 11:45:50 來(lái)源:億速云 閱讀:363 作者:小新 欄目:web開(kāi)發(fā)

這篇文章主要為大家展示了“JS如使用音頻可視化插件Wavesurfer.js”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“JS如使用音頻可視化插件Wavesurfer.js”這篇文章吧。

Wavesurfer.js是一款基于HTML5 canvas和Web Audio的音頻播放器插件,本文主要記錄它及其視覺(jué)效果插件Regions插件的使用方法。

1、創(chuàng)建實(shí)例

引入插件

import WaveSurfer from "wavesurfer.js";

創(chuàng)建實(shí)例對(duì)象

this.wavesurfer = WaveSurfer.create(options);

options

參數(shù)默認(rèn)值說(shuō)明
audioRate1音頻的播放速度,數(shù)值越小越慢
barWidthnone如果設(shè)置,波紋的樣式將變成類似柱狀圖的形狀
barHeight1波紋柱狀圖的高度,當(dāng)大于1的時(shí)候,將增加設(shè)置的高度
barGapnone波紋柱狀圖之間的間距
containernone必填參數(shù),指定渲染的dom的id名、類名或者dom本身
cursorColornone鼠標(biāo)點(diǎn)擊的顏色
cursorWidth1鼠標(biāo)點(diǎn)擊顯示的寬度
height128音頻的顯示高度
hideScrollbarfalse當(dāng)出現(xiàn)橫坐標(biāo)的時(shí)候,設(shè)置是否顯示
mediaTypeaudio音頻的類型,支持video
plugins[]使用的插件
progressColor#555光標(biāo)后面的波形部分的填充顏色
waveColor#555光標(biāo)后面的波形的填充顏色
xhr{}額外的請(qǐng)求XHR參數(shù)

實(shí)例演示:

this.wavesurfer = WaveSurfer.create({
  container: "#wave",
  waveColor: "#368666",
  progressColor: "#6d9e8b",
  cursorColor: "#fff",
  height: 80,
  plugins: [RegionsPlugin.create()]
});

2、方法調(diào)用

方法說(shuō)明
load(url)加載音頻
loadBlob(url)從Bolb或者file對(duì)象中調(diào)用音頻
play([start[, end]])從當(dāng)前位置開(kāi)始播放音頻文件。結(jié)合使用start和end可以指定一個(gè)音頻播放范圍
playPause()如果當(dāng)前為狀態(tài)狀態(tài)開(kāi)始播放,反之暫停播放
pause()停止播放
stop()停止播放并回到音頻文件的起始處
empty()清空waveform
destroy()銷毀waveform,移除事件,元素和關(guān)聯(lián)節(jié)點(diǎn)
getCurrentTime()獲取當(dāng)前播放的進(jìn)度,單位:秒
getDuration()獲取音頻的總時(shí)長(zhǎng),單位:秒
getVolume()獲取音量
setVolume(v)設(shè)置音量[0-1]
skip(offset)調(diào)到offset的位置
skipBackward()倒退skipLength秒
skipForward()前進(jìn)skipLength秒
isPlaying()判斷音頻是否在播放
on(eventName, callback)綁定事件
un(eventName, callback)解綁事件
unAll綁定所有的事件

實(shí)例演示

// 音頻加載
this.wavesurfer.load(audioUrl);

// 獲取總時(shí)長(zhǎng)
let duration = parseInt(this.wavesurfer.getDuration());

// 停止播放并回到起始點(diǎn)
this.wavesurfer.stop();

3、事件綁定

使用on()和un()對(duì)事件進(jìn)行綁定和解綁操作。

事件說(shuō)明
audioprocess音頻播放時(shí)觸發(fā)
destroy音頻銷毀時(shí)觸發(fā)
error音頻出錯(cuò)時(shí)觸發(fā)
finish音頻播放結(jié)束時(shí)觸發(fā)
loading音頻加載時(shí)觸發(fā)
ready音頻加載成功時(shí)觸發(fā)
play音頻開(kāi)始播放時(shí)觸發(fā)
pause音頻暫停時(shí)觸發(fā)
scroll當(dāng)有滾動(dòng)條滾動(dòng)的時(shí)候觸發(fā)
volume聲音調(diào)整時(shí)觸發(fā)
seek鼠標(biāo)點(diǎn)擊某個(gè)位置的時(shí)候觸發(fā)

實(shí)例演示:

// 加載時(shí)候
this.wavesurfer.on("loading", percents => {
  // 當(dāng)前加載的進(jìn)度
  this.percent = percents;
});

// 加載成功
this.wavesurfer.on("ready", () => {
  this.progress = false;
});

// 播放中
this.wavesurfer.on("audioprocess", () => {
  this.currentTime = this.getCurrentTime();
});

// 結(jié)束播放
this.wavesurfer.on("finish", () => {
  this.wavesurfer.pause();
});

4、Regions插件

Regions用于音頻播放器waveform視覺(jué)效果部分,可以用它來(lái)標(biāo)注某個(gè)區(qū)域。Regions可以被拖拽和改變尺寸大小。

引入插件

import RegionsPlugin from "wavesurfer.js/dist/plugin/wavesurfer.regions.js";

插件定義

this.wavesurfer = WaveSurfer.create({     
  plugins: [RegionsPlugin.create()]
});

Regions方法

方法說(shuō)明
addRegion(options)在waveform中創(chuàng)建一個(gè)Region。返回一個(gè)Region對(duì)象
clearRegions()移除所有的regions
enableDragSelection(options)可以通過(guò)選擇來(lái)創(chuàng)建支持拖拽和改變大小的Regin

實(shí)例演示:

參數(shù)默認(rèn)值說(shuō)明
id
region的id
start0region的開(kāi)始位置,單位秒
end0region的開(kāi)始位置,單位秒
loopfalse播放完畢后是否循環(huán)播放
dragtrue是否支持拖拽
resizetrue是否支持改變r(jià)egion的大小
color"rgba(0, 0, 0, 0.1)"region的顏色
this.currentRegion = this.wavesurfer.addRegion({
  id: id,
  start: startTime,
  end: endTime,
  loop: false,
  drag: false,
  resize: false,
  color: "rgba(254, 255, 255, 0.4)"
});

Regions的方法

方法說(shuō)明
play()播放region
playLoop()循環(huán)播放region
remove()移除region

Regions事件

事件說(shuō)明
remove在region被移除前觸發(fā)
update當(dāng)region被更新時(shí)觸發(fā)
click當(dāng)region點(diǎn)擊時(shí)觸發(fā)
dbclick當(dāng)region被雙擊時(shí)觸發(fā)
over當(dāng)region被鼠標(biāo)滑入時(shí)觸發(fā)
leave當(dāng)在region上的鼠標(biāo)離開(kāi)時(shí)觸發(fā)
// 更新起始時(shí)間
this.currentRegion.update({ start: newStartTime });

// 移除region
this.currentRegion.remove();

以上是“JS如使用音頻可視化插件Wavesurfer.js”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI