详解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 相关文章推荐
在jQuery ajax中按钮button和submit的区别分析
Oct 07 Javascript
Js保留小数点的4种效果实现代码分享
Apr 12 Javascript
Javascript中使用A标签获取当前目录的绝对路径方法
Mar 02 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
浅谈jquery设置和获得checkbox选中的问题
Aug 19 Javascript
基于jquery二维码生成插件qrcode
Jan 07 Javascript
浅谈$_FILES数组为空的原因
Feb 16 Javascript
ES6学习笔记之正则表达式和字符串正则方法分析
Apr 25 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
详解Vue中一种简易路由传参办法
Sep 15 Javascript
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
Dec 24 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
在普通HTTP上安全地传输密码
2007/07/21 PHP
第七章 php自定义函数实现代码
2011/12/30 PHP
浅谈PHP调用Webservice思路及源码分享
2014/06/04 PHP
php基于表单密码验证与HTTP验证用法实例
2015/01/06 PHP
php实现文件管理与基础功能操作
2017/03/21 PHP
Thinkphp 框架扩展之行为扩展原理与实现方法分析
2020/04/23 PHP
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
jQuery表格列宽可拖拽改变且兼容firfox
2014/09/03 Javascript
javascript中call,apply,bind的用法对比分析
2015/02/12 Javascript
jQuery滚动加载图片实现原理
2015/12/14 Javascript
详解AngularJS中的http拦截
2016/02/09 Javascript
关于JS中的apply,call,bind的深入解析
2016/04/05 Javascript
原生JS封装ajax 传json,str,excel文件上传提交表单(推荐)
2016/06/21 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
jQuery实现侧浮窗与中浮窗切换效果的方法
2016/09/05 Javascript
Javascript中常用类型的格式化方法小结
2016/12/26 Javascript
bootstrap模态框关闭后清除模态框的数据方法
2018/08/10 Javascript
详解如何在vscode里面调试js和node.js的方法步骤
2018/12/24 Javascript
详解Ant Design of React的安装和使用方法
2018/12/27 Javascript
[01:45]绝对公平!DOTA2队长征召模式详解
2014/04/25 DOTA
在python里从协程返回一个值的示例
2019/02/19 Python
使用python实现简单五子棋游戏
2019/06/18 Python
pandas DataFrame的修改方法(值、列、索引)
2019/08/02 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
Django实现WebSSH操作物理机或虚拟机的方法
2019/11/06 Python
pytorch 图像中的数据预处理和批标准化实例
2020/01/15 Python
Python控制台输出时刷新当前行内容而不是输出新行的实现
2020/02/21 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python HTMLTestRunner可视化报告实现过程解析
2020/04/10 Python
使用Python Tkinter实现剪刀石头布小游戏功能
2020/10/23 Python
香港演唱会订票网站:StubHub香港
2019/10/10 全球购物
大四学生毕业自荐信
2013/11/07 职场文书
现金会计岗位职责
2013/12/05 职场文书
建筑工地质量标语
2014/06/12 职场文书
关于Python OS模块常用文件/目录函数详解
2021/07/01 Python
python内置模块之上下文管理contextlib
2022/06/14 Python