详解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对象和DOM对象使用说明
Jun 25 Javascript
jQuery数据缓存用法分析
Feb 20 Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 Javascript
jquery+php随机生成红包金额数量代码分享
Aug 27 Javascript
jquery ajax分页插件的简单实现
Jan 27 Javascript
jQuery Tags Input Plugin(添加/删除标签插件)详解
Jun 20 Javascript
jquery插件autocomplete用法示例
Jul 01 Javascript
前端面试题及答案整理(二)
Aug 26 Javascript
正则表达式,替换所有HTML标签的简单实例
Nov 28 Javascript
jQuery实现简单漂亮的Nav导航菜单效果
Mar 29 jQuery
详解AngularJS1.x学习directive 中‘& ’‘=’ ‘@’符号的区别使用
Aug 23 Javascript
jQuery+ajax实现动态添加表格tr td功能示例
Apr 23 jQuery
利用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
php中一个完整表单处理实现代码
2011/11/10 PHP
纯JavaScript实现的完美渐变弹出层效果代码
2010/04/02 Javascript
jQuery EasyUI 中文API Button使用实例
2010/04/14 Javascript
非阻塞动态加载javascript广告实现代码
2010/11/17 Javascript
点击弹出层效果&弹出窗口后网页背景变暗效果的实现代码
2014/02/10 Javascript
JavaScript判断图片是否已经加载完毕的方法汇总
2016/02/05 Javascript
AngularJS在IE8的不支持的解决方法
2016/05/13 Javascript
JS控制FileUpload的上传文件类型实例代码
2016/10/07 Javascript
基于Vue2的移动端开发环境搭建详解
2016/11/03 Javascript
js实现界面向原生界面发消息并跳转功能
2016/11/22 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
jquery 遍历hash操作示例【基于ajax交互】
2019/10/12 jQuery
使用Vue-cli 中为单独页面设置背景图片铺满全屏
2020/07/17 Javascript
jquery简易手风琴插件的封装
2020/10/13 jQuery
vue实现一个获取按键展示快捷键效果的Input组件
2021/01/13 Vue.js
[01:41]DOTA2超级联赛专访YYF 称一辈子难忘TI2
2013/05/28 DOTA
基于wxpython实现的windows GUI程序实例
2015/05/30 Python
利用python爬取斗鱼app中照片方法实例
2017/12/03 Python
Python机器学习之SVM支持向量机
2017/12/27 Python
机器学习之KNN算法原理及Python实现方法详解
2018/07/09 Python
在windows下使用python进行串口通讯的方法
2019/07/02 Python
python中rc1什么意思
2020/06/19 Python
Python 求向量的余弦值操作
2021/03/04 Python
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
应届生如何写自荐信
2014/01/05 职场文书
招聘单位介绍信
2014/01/14 职场文书
工程负责人任命书
2014/06/06 职场文书
刑事和解协议书范本
2014/11/19 职场文书
公司财务部岗位职责
2015/04/14 职场文书
歌咏比赛主持词
2015/06/29 职场文书
开学第一周总结
2015/07/16 职场文书
运动会100米广播稿
2015/08/19 职场文书
2016年庆“七一”主题党日活动总结
2016/04/05 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
SSM项目使用拦截器实现登录验证功能
2022/01/22 Java/Android
Python+Matplotlib图像上指定坐标的位置添加文本标签与注释
2022/04/11 Python