经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » JS/JS库/框架 » JavaScript » 查看文章
Wavesurfer.js音频播放器插件的使用教程
来源:cnblogs  作者:webhmy  时间:2018/11/1 9:31:38  对本文有异议

Wavesurfer.js是一款基于HTML5 canvas和Web Audio的音频播放器插件,本文主要记录它及其视觉效果插件Regions插件的使用方法。

1、创建实例

  • 引入插件

  1. import WaveSurfer from "wavesurfer.js";
  • 创建实例对象

  1. this.wavesurfer = WaveSurfer.create(options);

options

参数默认值说明
audioRate1音频的播放速度,数值越小越慢
barWidthnone如果设置,波纹的样式将变成类似柱状图的形状
barHeight1波纹柱状图的高度,当大于1的时候,将增加设置的高度
barGapnone波纹柱状图之间的间距
containernone必填参数,指定渲染的dom的id名、类名或者dom本身
cursorColornone鼠标点击的颜色
cursorWidth1鼠标点击显示的宽度
height128音频的显示高度
hideScrollbarfalse当出现横坐标的时候,设置是否显示
mediaTypeaudio音频的类型,支持video
plugins[]使用的插件
progressColor#555光标后面的波形部分的填充颜色
waveColor#555光标后面的波形的填充颜色
xhr{}额外的请求XHR参数

实例演示:

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

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绑定所有的事件

实例演示:

  1. // 音频加载
  2. this.wavesurfer.load(audioUrl);
  3.  
  4. // 获取总时长
  5. let duration = parseInt(this.wavesurfer.getDuration());
  6.  
  7. // 停止播放并回到起始点
  8. this.wavesurfer.stop();

3、事件绑定

使用on()un()对事件进行绑定和解绑操作。

事件说明
audioprocess音频播放时触发
destroy音频销毁时触发
error音频出错时触发
finish音频播放结束时触发
loading音频加载时触发
ready音频加载成功时触发
play音频开始播放时触发
pause音频暂停时触发
scroll当有滚动条滚动的时候触发
volume声音调整时触发
seek鼠标点击某个位置的时候触发

实例演示:

  1. // 加载时候
  2. this.wavesurfer.on("loading", percents => {
  3.     // 当前加载的进度
  4.     this.percent = percents;
  5. });
  6.  
  7. // 加载成功
  8. this.wavesurfer.on("ready", () => {
  9.     this.progress = false;
  10. });
  11.  
  12. // 播放中
  13. this.wavesurfer.on("audioprocess", () => {
  14.     this.currentTime = this.getCurrentTime();
  15. });
  16.  
  17. // 结束播放
  18. this.wavesurfer.on("finish", () => {
  19.     this.wavesurfer.pause();
  20. });

4、Regions插件

Regions用于音频播放器waveform视觉效果部分,可以用它来标注某个区域。Regions可以被拖拽和改变尺寸大小。

  • 引入插件

  1. import RegionsPlugin from "wavesurfer.js/dist/plugin/wavesurfer.regions.js";
  • 插件定义

  1. this.wavesurfer = WaveSurfer.create({          
  2.     plugins: [RegionsPlugin.create()]
  3. });
  • Regions方法

方法说明
addRegion(options)在waveform中创建一个Region。返回一个Region对象
clearRegions()移除所有的regions
enableDragSelection(options)可以通过选择来创建支持拖拽和改变大小的Regin
  • Regions的options

参数默认值说明
id
region的id
start0region的开始位置,单位秒
end0region的开始位置,单位秒
loopfalse播放完毕后是否循环播放
dragtrue是否支持拖拽
resizetrue是否支持改变region的大小
color"rgba(0, 0, 0, 0.1)"region的颜色

实例演示:

  1. this.currentRegion = this.wavesurfer.addRegion({
  2.     id: id,
  3.     start: startTime,
  4.     end: endTime,
  5.     loop: false,
  6.     drag: false,
  7.     resize: false,
  8.     color: "rgba(254, 255, 255, 0.4)"
  9. });

  • Regions的方法

方法说明
play()播放region
playLoop()循环播放region
remove()移除region
  • Regions的事件

事件说明
remove在region被移除前触发
update当region被更新时触发
click当region点击时触发
dbclick当region被双击时触发
over当region被鼠标滑入时触发
leave当在region上的鼠标离开时触发
  1. // 更新起始时间
  2. this.currentRegion.update({ start: newStartTime });
  3.  
  4. // 移除region
  5. this.currentRegion.remove();

更多方法请看官网:wavesurfer官网

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号