详解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 相关文章推荐
Javascript 获取字符串字节数的多种方法
Jun 02 Javascript
在IE6下发生Internet Explorer cannot open the Internet site错误
Jun 21 Javascript
JavaScript 学习笔记之变量及其作用域
Jan 14 Javascript
javascript实现圣旨卷轴展开效果(代码分享)
Mar 23 Javascript
Angular中$state.go页面跳转并传递参数的方法
May 09 Javascript
基于layer.js实现收货地址弹框选择然后返回相应的地址信息
May 26 Javascript
微信小程序 新建登录页并实现tabBar隐藏
Jun 13 Javascript
JavaScript之生成器_动力节点Java学院整理
Jun 30 Javascript
ES6 javascript中class类的get与set用法实例分析
Oct 30 Javascript
JavaScript实现修改伪类样式
Nov 27 Javascript
JS图片懒加载的优点及实现原理
Jan 10 Javascript
js实现随机点名
Jan 19 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
Terran兵种对照表
2020/03/14 星际争霸
中国收音机工业发展史
2021/03/02 无线电
PHP 文本文章分页代码 按标记或长度(不涉及数据库)
2012/06/07 PHP
Zend Framework实现多服务器共享SESSION数据的方法
2016/03/22 PHP
PHP类相关知识点实例总结
2016/09/28 PHP
php魔术方法功能与用法实例分析
2016/10/19 PHP
IE与Firefox下javascript getyear年份的兼容性写法
2007/12/20 Javascript
基于jquery的图片幻灯展示源码
2012/07/15 Javascript
Node.js抓取中文网页乱码问题和解决方法
2015/02/10 Javascript
基于jquery实现页面滚动到底自动加载数据的功能
2015/12/19 Javascript
jquery实现图片平滑滚动详解
2017/03/22 jQuery
Vue通过input筛选数据
2020/10/26 Javascript
js学习总结之DOM2兼容处理重复问题的解决方法
2017/07/27 Javascript
微信小程序HTTP接口请求封装的实现
2019/02/21 Javascript
JS数组splice操作实例分析
2019/10/12 Javascript
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
python时间日期函数与利用pandas进行时间序列处理详解
2018/03/13 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
Python自动化完成tb喵币任务的操作方法
2019/10/30 Python
基于python实现数组格式参数加密计算
2020/04/21 Python
使用Python3 poplib模块删除服务器多天前的邮件实现代码
2020/04/24 Python
python 使用cycle构造无限循环迭代器
2020/12/02 Python
CSS3 实现侧边栏展开收起动画
2014/12/22 HTML / CSS
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
C语言变量的命名规则都有哪些
2013/12/27 面试题
俄语专业毕业生推荐信
2013/10/28 职场文书
小班重阳节活动方案
2014/02/08 职场文书
司机职责范本
2014/03/08 职场文书
公司合并协议书范本
2014/09/30 职场文书
优秀学生干部事迹材料
2014/12/24 职场文书
2015年秋季灭鼠工作总结
2015/07/27 职场文书
2016年猴年新春致辞
2015/08/01 职场文书
前端学习——JavaScript原生实现购物车案例
2021/03/31 Javascript
Python机器学习之基础概述
2021/05/19 Python
Python实现智慧校园自动评教全新版
2021/06/18 Python