详解Howler.js Web音频播放终极解决方案


Posted in Javascript onAugust 23, 2020

前言

相信有很多人在写移动端音频播放的时候都踩过不少坑,特别是复杂音频项目在兼容多种设备的时候更是让你抓狂,比如ios端不能一开始就播放音频,必须要用户进行了操作。。。。

偶然间了解到了一个兼容所有设备和浏览器的音频引擎Howler.js 使用了一下非常完美

Howler.js 是一个新的 JavaScript 库用于处理 Web 中的音频,该库最初是为一个 HTML5 游戏引擎所开发,但也可用于其他的 Web 项目,Howler.js 基于 Google 的 Web Audio API,能够帮助你快速简单全面的控制音频。

特点及兼容性

  • Howler.js默认使用Web Audio,但在IE上可以自动转为HTML 5 Audio。这点很是贴心。
  • 移动端的Safari和Chrome都禁止网页自动播放声音,必须通过用户的操作,touch, click等触发。Howler.js可以设置成自动捕捉用户操作激活(解禁)声音播放。
  • Howler.js支持很多声音格式以兼容各种浏览器。MP3, MPEG, OPUS, OGG, OGA, WAV, AAC, CAF, M4A, MP4, WEBA, WEBM, DOLBY, FLAC.几乎涵盖了所有格式
  • 支持3D游戏
  • 自动缓存
  • 支持淡入淡出效果
  • 轻量
  • 纯JS
  • 无第三方依赖
  • 模块化

「更多特性可以去Github查看 Howler.js」

使用方法

官网上都有介绍 这里不过多讨论

import {Howl, Howler} from 'howler';

// 初始化一个音频类
const sound = new Howl({
 src: ['sound.webm', 'sound.mp3']
});

// 播放音频
sound.play();

// 改变全局音频声音大小
Howler.volume(0.5);

// 只想改变某个音频的大小可以在初始化的时候修改
const sound = new Howl({
 src: ['sound.webm', 'sound.mp3'],
 volume:0.5
});

使用Howler.js

最基本的,一个MP3播放:

var sound = new Howl({
 urls: ['sound.mp3']
}).play();

更多的播放选项:

var sound = new Howl({
 urls: ['sound.mp3', 'sound.ogg', 'sound.wav'],
 autoplay: true,
 loop: true,
 volume: 0.5,
 onend: function() {
  console.log('Finished!');
 }
});

定义和播放某一部分的音频

var sound = new Howl({
 urls: ['sounds.mp3', 'sounds.ogg'],
 sprite: {
  blast: [0, 1000],
  laser: [2000, 3000],
  winner: [4000, 7500]
 }
});

// shoot the laser!
sound.play('laser');

总结

自己封装的音频库多多少少会有一些性能和兼容问题,比如音频循环播放的时候Howler就处理的非常好不会有切割的感觉

 到此这篇关于详解Howler.js Web音频播放终极解决方案的文章就介绍到这了,更多相关Howler.js Web音频播放内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
js中的string.format函数代码
Aug 11 Javascript
jQuery动画animate方法使用介绍
May 06 Javascript
replace()方法查找字符使用示例
Oct 28 Javascript
js+css实现的简单易用兼容好的分页
Dec 30 Javascript
js加载读取内容及显示与隐藏div示例
Feb 13 Javascript
jquery原理以及学习技巧介绍
Nov 11 Javascript
JQueryEasyUI框架下的combobox的取值和绑定的方法
Jan 22 Javascript
前端开发之CSS原理详解
Mar 11 Javascript
vue实现图书管理demo详解
Oct 17 Javascript
puppeteer实现html截图的示例代码
Jan 10 Javascript
说说Vuex的getters属性的具体用法
Apr 15 Javascript
Vue清除定时器setInterval优化方案分享
Jul 21 Javascript
利用React高阶组件实现一个面包屑导航的示例
Aug 23 #Javascript
vue中watch和computed的区别与使用方法
Aug 23 #Javascript
vue动态设置页面title的方法实例
Aug 23 #Javascript
Vue管理系统前端之组件拆分封装详解
Aug 23 #Javascript
Vue中keep-alive组件的深入理解
Aug 23 #Javascript
google广告之另类js调用实现代码
Aug 22 #Javascript
JS typeof fn === 'function' && fn()详解
Aug 22 #Javascript
You might like
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
JS 两日期相减,获得天数的小例子(兼容IE,FF)
2013/07/01 Javascript
javascript:void(0)使用探讨
2013/08/27 Javascript
JS测试显示屏分辨率以及屏幕尺寸的方法
2013/11/22 Javascript
浅析AngularJS Filter用法
2015/12/28 Javascript
jQuery+PHP+MySQL实现无限级联下拉框效果
2016/02/19 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
JS读写CSS样式的方法汇总
2016/08/16 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
解析JavaScript数组方法reduce
2016/12/12 Javascript
基于mpvue小程序使用echarts画折线图的方法示例
2019/04/24 Javascript
js+canvas实现纸牌游戏
2020/03/16 Javascript
JavaScript设计模式之策略模式实现原理详解
2020/05/29 Javascript
Openlayers绘制聚合标注
2020/09/28 Javascript
[38:41]2014 DOTA2国际邀请赛中国区预选赛 LGD VS CNB
2014/05/22 DOTA
[01:03:18]DOTA2-DPC中国联赛 正赛 RNG vs Dynasty BO3 第一场 1月29日
2021/03/11 DOTA
python使用win32com在百度空间插入html元素示例
2014/02/20 Python
python中assert用法实例分析
2015/04/30 Python
python登录并爬取淘宝信息代码示例
2017/12/09 Python
python迭代dict的key和value的方法
2018/07/06 Python
tensorflow 恢复指定层与不同层指定不同学习率的方法
2018/07/26 Python
基于python实现蓝牙通信代码实例
2019/11/19 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
Django Channel实时推送与聊天的示例代码
2020/04/30 Python
如何在python中处理配置文件代码实例
2020/09/27 Python
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
大学生毕业求职找工作的自我评价
2013/09/29 职场文书
保安自我鉴定范文
2013/12/08 职场文书
运动会通讯稿400字
2014/01/28 职场文书
幼儿园六一儿童节主持节目串词
2014/03/21 职场文书
学校消防安全责任书
2014/07/23 职场文书
解放思想演讲稿
2014/09/11 职场文书
企业授权委托书范本
2014/09/22 职场文书
经销商会议开幕词
2016/03/04 职场文书
MySQL提取JSON字段数据实现查询
2022/04/22 MySQL