Wavesurfer.js音频播放器插件的使用教程
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.min.js";
- 插件定义
this.wavesurfer = WaveSurfer.create({
plugins: [RegionsPlugin.create()]
});
- Regions方法
| 方法 | 说明 |
|---|---|
| addRegion(options) | 在waveform中创建一个Region。返回一个Region对象 |
| clearRegions() | 移除所有的regions |
| enableDragSelection(options) | 可以通过选择来创建支持拖拽和改变大小的Regin |
- Regions的options
| 参数 | 默认值 | 说明 |
|---|---|---|
| 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官网
Wavesurfer.js音频播放器插件的使用教程的更多相关文章
- js插件---10个免费开源的JS音乐播放器插件
js插件---10个免费开源的JS音乐播放器插件 一.总结 一句话总结:各种插件都有很多,多去找. 二.js插件---10个免费开源的JS音乐播放器插件 亲测可用 音乐播放器在网页设计中有时候会用到, ...
- 10个免费开源的JS音乐播放器插件
点这里 音乐播放器在网页设计中有时候会用到,比如一些时尚类.音乐或影视类等项目,但这些 网页播放器 插件比较少见,所以这里为大家整理一个集合,也许会有用到的时候. 下面整理的播放器有些是支持自适应的, ...
- 基于canvas和Web Audio的音频播放器
wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件.通过wavesurfer.js你能够使用它来制作各种HTML5音频播放器,它能够在各种支持 Web A ...
- 【jquery】一款不错的音频播放器——Amazing Audio Player
前段时间分享了一款视频播放器,点击这里.今天介绍一款不错的音频播放器——Amazing Audio Player. 介绍: Amazing Audio Player 是一个使用很方便的 Windows ...
- 小型音乐播放器插件APlayer.js的简单使用例子
本篇博客将会给出一个小型音乐播放器插件APlayer.js的使用例子.关于APlayer.js的具体介绍和Github地址,可以参考: https://github.com/MoePlayer/A ...
- 使用EasyNVR无插件流媒体服务器接口和EasyPlayer.js播放器插件实现web网页H5播放无插件
1.背景需求 很多客户在使用EasyNVR无插件流媒体服务器时,不喜欢产品化的界面,有时可能满足不了日常观看使用的需求.因此软件提供丰富的HTTP接口,供第三方平台调用集成.但是有时客户这边可能没有专 ...
- (原创)jQuery Media Plugin-jQuery的网页媒体播放器插件的使用心得
jQuery Media Plugin是一款基于jQuery的网页媒体播放器插件,它支持大部分的网络多媒体播放器和多媒体格式,比如:Flash, Windows Media Player, Real ...
- Asp.Net MVC中Aplayer.js音乐播放器的使用
1.前言: Aplater.js是一款可爱.漂亮的Js音乐播放器,以前就了解过也弄过一些,现在就用mp3的格式来在.Net里面开发.管网 https://aplayer.js.org/ 2.入手: 在 ...
- HTML5 音频播放器-Javascript代码(短小精悍)
直接上干货咯! //HTML5 音频播放器 lzpong 2015/01/19 var wavPlayer = function () { if(window.parent.wavPlayer) re ...
随机推荐
- php自动获取上一个月的起始时间
1.借鉴评论的方法[20170309 edit] function get_month_start_end($timestamp) { !empty($timestamp) OR $timestamp ...
- Jsp程序要在Tomcat下运行
首先,回顾下jsp与servlet的区别与联系 JSP经过编译后就成了servlet JSP本质就是Servlet,JVM只能识别java类,不能识别JSP代码,Web容器将JSP代码编译成JVM能够 ...
- 轻松应对IDC机房带宽突然暴涨问题
轻松应对IDC机房带宽突然暴涨问题! 1[提出问题] [实际案例一] 凌晨3:00点某公司(网站业务)的一个IDC机房带宽流量突然从平时高峰期150M猛增至1000M,如下图: 该故障的影响:直接导致 ...
- 【Oracle】DBMS_STATS.GATHER_TABLE_STATS详解
由于Oracle的优化器是CBO,所以对象的统计数据对执行计划的生成至关重要! 作用:DBMS_STATS.GATHER_TABLE_STATS统计表,列,索引的统计信息(默认参数下是对表进行直 ...
- Python3.x urlib包
在Python3.x中,我们可以使用urlib这个组件抓取网页,urllib是一个URL处理包,这个包中集合了一些处理URL的模块,如下: 1.urllib.request模块是用来打开和读取URLs ...
- [翻译] JTNumberScrollAnimatedView
JTNumberScrollAnimatedView 本人视频教程系类 iOS中CALayer的使用 效果: Use JTNumberScrollAnimatedView for have a n ...
- Effective C++(1-2) 编译器替换预处理器
1 C++最主要的四部分: C Object-Oriented C++: 面向对象 Template C++:泛型编程 STL C++高效编程守则视状况而变化,取决于你使用C++的哪一部分. 2 尽量 ...
- Apache配置支持目录浏览
主配置文件 httpd.conf 中修改: 1)添加支持模块 LoadModule autoindex_module modules/mod_autoindex.so LoadModule dir ...
- lua垃圾回收之空表
故事背景: 自己手动手写的一个lua外部库luaopen_xxx,采用了tolua++1.0.93,编译后得到xxx.dll,当在luajit中require 'xxx'后是正常的,但如果运行环境换成 ...
- MySQL语法相关其一
一篇基础语法相关的笔记 // 参考资料: MySQL入门很简单 黄缙华等编著 清华大学出版社 北京 建议进入官网下载对应版本后安装:https://dev.mysql.com/downloads/my ...