详解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 兼容firefox的一些问题
May 21 Javascript
Jquery解析Json格式数据过程代码
Oct 17 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
Aug 05 Javascript
input file上传 图片预览功能实例代码
Oct 25 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
Oct 30 Javascript
jQuery实现选项卡功能(两种方法)
Mar 08 Javascript
一个简易的js图片轮播效果
Jul 22 Javascript
vue-router 路由基础的详解
Oct 17 Javascript
Vue.js组件间的循环引用方法示例
Dec 27 Javascript
Vue 父子组件数据传递的四种方式( inheritAttrs + $attrs + $listeners)
May 04 Javascript
原型和原型链 prototype和proto的区别详情
Nov 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
德劲1103二次变频版的打磨
2021/03/02 无线电
PHP调用MySQL的存储过程的实现代码
2008/08/12 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
2016/07/09 PHP
php使用CURL模拟GET与POST向微信接口提交及获取数据的方法
2016/09/23 PHP
摘自百度的图片轮换效果代码
2007/11/19 Javascript
js函数排序的实例代码
2013/07/01 Javascript
如何使用JS获取IE上传文件路径(IE7,8)
2013/07/08 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
微信小程序中的onLoad详解及简单实例
2017/04/05 Javascript
AngularJS基于http请求实现下载php生成的excel文件功能示例
2018/01/23 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
js删除对象中的某一个字段的方法实现
2021/01/11 Javascript
[31:47]夜魇凡尔赛茶话会 第三期01:选手知多少
2021/03/11 DOTA
python将图片文件转换成base64编码的方法
2015/03/14 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
浅谈Python中文件夹和python package包的区别
2020/06/01 Python
python 从list中随机取值的方法
2020/11/16 Python
俄罗斯美容和健康网上商店:Созвездие Красоты
2019/07/23 全球购物
Hotels.com拉丁美洲:从豪华酒店到经济型酒店的预定优惠和折扣
2019/12/09 全球购物
.NET里面如何取得当前的屏幕分辨率
2012/12/06 面试题
高中生学习的自我评价
2013/12/14 职场文书
服装创业计划书范文
2014/02/05 职场文书
上课看小说检讨书
2014/02/22 职场文书
公司新年寄语
2014/04/04 职场文书
合伙协议书
2014/04/23 职场文书
公司放假通知范文
2015/04/14 职场文书
毕业论文答辩开场白
2015/05/27 职场文书
小王子读书笔记
2015/06/29 职场文书
2016年会领导致辞稿
2015/07/29 职场文书
2016年度优秀辅导员事迹材料
2016/02/26 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server
教你在 Java 中实现 Dijkstra 最短路算法的方法
2022/04/08 Java/Android
ubuntu下常用apt命令介绍
2022/06/05 Servers