详解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 获取中文拼音,Select自动匹配字母获取值的代码
Sep 23 Javascript
扩展javascript的Date方法实现代码(prototype)
Nov 20 Javascript
利用jquery动画特效和css打造的侧边弹出垂直导航
Apr 04 Javascript
javascript数字时钟示例分享
Apr 23 Javascript
用js模拟struts2的多action调用示例
May 19 Javascript
原生Javascript封装的一个AJAX函数分享
Oct 11 Javascript
jQuery插件datatables使用教程
Apr 21 Javascript
微信小程序(三):网络请求
Jan 13 Javascript
Vue 动态设置路由参数的案例分析
Apr 24 Javascript
最简单的JS实现json转csv的方法
Jan 10 Javascript
Vue引入Stylus知识点总结
Jan 16 Javascript
JavaScript事件循环及宏任务微任务原理解析
Sep 02 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
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php 函数使用方法与函数定义方法
2010/05/09 PHP
php在页面中调用fckeditor编辑器的方法
2011/06/10 PHP
php array_filter除去数组中的空字符元素
2020/06/21 PHP
php生成随机颜色方法汇总
2014/12/03 PHP
PHP-FPM 的管理和配置详解
2019/02/17 PHP
基于jQuery的日期选择控件
2009/10/27 Javascript
JavaScript关于select的相关操作说明
2010/01/13 Javascript
jQuery powerFloat万能浮动层下拉层插件使用介绍
2010/12/27 Javascript
javascript实现分栏显示小技巧附图
2014/10/13 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
jQuery实现选中弹出窗口选择框内容后赋值给文本框的方法
2015/11/23 Javascript
帝国cms首页列表页实现点赞功能
2017/10/30 Javascript
利用ES6实现单例模式及其应用详解
2017/12/09 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
2019/09/06 Javascript
jquery插件实现轮播图效果
2020/10/19 jQuery
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
Python SQLAlchemy入门教程(基本用法)
2019/11/11 Python
Python3和pyqt5实现控件数据动态显示方式
2019/12/13 Python
python飞机大战pygame碰撞检测实现方法分析
2019/12/17 Python
纯CSS3制作的简洁蓝白风格的登录模板(非IE效果更好)
2013/08/11 HTML / CSS
玩具反斗城葡萄牙官方商城:Toys"R"Us葡萄牙
2016/10/21 全球购物
美国折衷生活方式品牌:Robert Graham
2018/07/13 全球购物
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
西班牙土拨鼠床垫公司,感觉在云端:Marmota
2019/03/18 全球购物
艺术教育实施方案
2014/05/03 职场文书
国旗下的演讲稿
2014/05/08 职场文书
2014最新离职证明范本
2014/09/12 职场文书
红领巾广播站广播稿
2014/10/19 职场文书
工作作风建设心得体会
2014/10/22 职场文书
孝老爱亲事迹材料
2014/12/24 职场文书
领导莅临指导欢迎词
2015/09/30 职场文书
MySQL为数据表建立索引的原则详解
2022/03/03 MySQL
Python Pygame实战在打砖块游戏的实现
2022/03/17 Python