Wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件,本文主要记录它及其视觉效果插件Regions插件的使用方法。
1、创建实例
引入插件
import WaveSurfer from "wavesurfer.js";
创建实例对象
this.wavesurfer = WaveSurfer.create(options);
options
参数
默认值
说明
audioRate
1
音频的播放速度,数值越小越慢
barWidth
none
如果设置,波纹的样式将变成类似柱状图的形状
barHeight
1
波纹柱状图的高度,当大于1的时候,将增加设置的高度
barGap
none
波纹柱状图之间的间距
container
none
必填参数,指定渲染的dom的id名、类名或者dom本身
cursorColor
none
鼠标点击的颜色
cursorWidth
1
鼠标点击显示的宽度
height
128
音频的显示高度
hideScrollbar
false
当出现横坐标的时候,设置是否显示
mediaType
audio
音频的类型,支持video
plugins
[]
使用的插件
progressColor
#555
光标后面的波形部分的填充颜色
waveColor
#555
光标后面的波形的填充颜色
xhr
{}
额外的请求XHR参数
实例演示:
this.wavesurfer = WaveSurfer.create({ container: "#wave", waveColor: "#368666", progressColor: "#6d9e8b", cursorColor: "#fff", height: 80, plugins: [RegionsPlugin.create()] });
2、方法调用
方法
说明
load(url)
加载音频
loadBlob(url)
从Bolb或者file对象中调用音频
play([start[, end]])
从当前位置开始播放音频文件。结合使用start和end可以指定一个音频播放范围
playPause()
如果当前为状态状态开始播放,反之暂停播放
pause()
停止播放
stop()
停止播放并回到音频文件的起始处
empty()
清空waveform
destroy()
销毁waveform,移除事件,元素和关联节点
getCurrentTime()
获取当前播放的进度,单位:秒
getDuration()
获取音频的总时长,单位:秒
getVolume()
获取音量
setVolume(v)
设置音量[0-1]
skip(offset)
调到offset的位置
skipBackward()
倒退skipLength秒
skipForward()
前进skipLength秒
isPlaying()
判断音频是否在播放
on(eventName, callback)
绑定事件
un(eventName, callback)
解绑事件
unAll
绑定所有的事件
实例演示
// 音频加载 this.wavesurfer.load(audioUrl); // 获取总时长 let duration = parseInt(this.wavesurfer.getDuration()); // 停止播放并回到起始点 this.wavesurfer.stop();
3、事件绑定
使用on()和un()对事件进行绑定和解绑操作。
事件
说明
audioprocess
音频播放时触发
destroy
音频销毁时触发
error
音频出错时触发
finish
音频播放结束时触发
loading
音频加载时触发
ready
音频加载成功时触发
play
音频开始播放时触发
pause
音频暂停时触发
scroll
当有滚动条滚动的时候触发
volume
声音调整时触发
seek
鼠标点击某个位置的时候触发
实例演示:
// 加载时候 this.wavesurfer.on("loading", percents => { // 当前加载的进度 this.percent = percents; }); // 加载成功 this.wavesurfer.on("ready", () => { this.progress = false; }); // 播放中 this.wavesurfer.on("audioprocess", () => { this.currentTime = this.getCurrentTime(); }); // 结束播放 this.wavesurfer.on("finish", () => { this.wavesurfer.pause(); });
4、Regions插件
Regions用于音频播放器waveform视觉效果部分,可以用它来标注某个区域。Regions可以被拖拽和改变尺寸大小。
引入插件
import RegionsPlugin from "wavesurfer.js/dist/plugin/wavesurfer.regions.js";
插件定义
this.wavesurfer = WaveSurfer.create({ plugins: [RegionsPlugin.create()] });
Regions方法
方法
说明
addRegion(options)
在waveform中创建一个Region。返回一个Region对象
clearRegions()
移除所有的regions
enableDragSelection(options)
可以通过选择来创建支持拖拽和改变大小的Regin
实例演示:
参数
默认值
说明
id
region的id
start
0
region的开始位置,单位秒
end
0
region的开始位置,单位秒
loop
false
播放完毕后是否循环播放
drag
true
是否支持拖拽
resize
true
是否支持改变region的大小
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的方法
方法
说明
play()
播放region
playLoop()
循环播放region
remove()
移除region
Regions事件
事件
说明
remove
在region被移除前触发
update
当region被更新时触发
click
当region点击时触发
dbclick
当region被双击时触发
over
当region被鼠标滑入时触发
leave
当在region上的鼠标离开时触发
// 更新起始时间 this.currentRegion.update({ start: newStartTime }); // 移除region this.currentRegion.remove();
更多方法请看官网:wavesurfer官网
总结
以上所述是小编给大家介绍的JS 音频可视化插件Wavesurfer.js的使用教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 黄乙玲1988-无稳定的爱心肝乱糟糟[日本东芝1M版][WAV+CUE]
- 群星《我们的歌第六季 第3期》[320K/MP3][70.68MB]
- 群星《我们的歌第六季 第3期》[FLAC/分轨][369.48MB]
- 群星《燃!沙排少女 影视原声带》[320K/MP3][175.61MB]
- 乱斗海盗瞎6胜卡组推荐一览 深暗领域乱斗海盗瞎卡组分享
- 炉石传说乱斗6胜卡组分享一览 深暗领域乱斗6胜卡组代码推荐
- 炉石传说乱斗本周卡组合集 乱斗模式卡组最新推荐
- 佟妍.2015-七窍玲珑心【万马旦】【WAV+CUE】
- 叶振棠陈晓慧.1986-龙的心·俘虏你(2006复黑限量版)【永恒】【WAV+CUE】
- 陈慧琳.1998-爱我不爱(国)【福茂】【WAV+CUE】
- 咪咕快游豪礼放送,百元京东卡、海量欢乐豆就在咪咕咪粉节!
- 双11百吋大屏焕新“热”,海信AI画质电视成最大赢家
- 海信电视E8N Ultra:真正的百吋,不止是大!
- 曾庆瑜1990-曾庆瑜历年精选[派森][WAV+CUE]
- 叶玉卿1999-深情之选[飞图][WAV+CUE]