详解Howler.js Web音频播放终极解决方案

 更新时间:2020年08月23日 17:08:23   作者:YiHe109674  
这篇文章主要介绍了详解Howler.js Web音频播放终极解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

相信有很多人在写移动端音频播放的时候都踩过不少坑,特别是复杂音频项目在兼容多种设备的时候更是让你抓狂,比如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音频播放内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • KnockoutJS 3.X API 第四章之事件event绑定

    KnockoutJS 3.X API 第四章之事件event绑定

    event绑定即为事件绑定,即当触发相关DOM事件的时候回调函数,这篇文章主要介绍了KnockoutJS 3.X API 第四章之事件event绑定的相关知识,感兴趣的朋友一起看看吧
    2016-10-10
  • SublimeText自带格式化代码功能之reindent

    SublimeText自带格式化代码功能之reindent

    这篇文章主要介绍了SublimeText自带格式化代码功能之reindent的相关资料,需要的朋友可以参考下
    2015-12-12
  • JavaScript实现简单的树形菜单效果

    JavaScript实现简单的树形菜单效果

    这篇文章主要为大家详细介绍了JavaScript实现简单的树形菜单效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-06-06
  • JS简单获得节点元素的方法示例

    JS简单获得节点元素的方法示例

    这篇文章主要介绍了JS简单获得节点元素的方法,结合实例形式分析了javascript获取页面节点元素及修改元素属性相关操作技巧,需要的朋友可以参考下
    2018-02-02
  • JavaScript中for与forEach分别如何跳出循环

    JavaScript中for与forEach分别如何跳出循环

    forEach的优势一个是它的回调函数形成了一个作用域,它的curItem和i不会像for循环一样污染全局变量,这篇文章主要给大家介绍了关于JavaScript中for与forEach分别如何跳出循环的相关资料,需要的朋友可以参考下
    2024-01-01
  • ES5 ES6中Array对象去除重复项的方法总结

    ES5 ES6中Array对象去除重复项的方法总结

    这篇文章主要给大家介绍了Array对象去除重复项的相关资料,文中通过示例代码详细介绍了在ES5和ES6中Array对象去除重复项的方法,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-04-04
  • JS实现旋转木马轮播案例

    JS实现旋转木马轮播案例

    这篇文章主要为大家详细介绍了JS实现旋转木马轮播案例,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-10-10
  • JavaScript+CSS控制打印格式示例介绍

    JavaScript+CSS控制打印格式示例介绍

    用media="print"的css来控制要打印的文件,media为print的样式,表示打印时该样式才起作用,下面为大家详细介绍下,感兴趣的朋友不要错过
    2014-01-01
  • JS使用栈判断给定字符串是否是回文算法示例

    JS使用栈判断给定字符串是否是回文算法示例

    这篇文章主要介绍了JS使用栈判断给定字符串是否是回文算法,涉及基于javascript栈的构造、遍历、判断等相关操作技巧,需要的朋友可以参考下
    2019-03-03
  • js实现简单的倒计时

    js实现简单的倒计时

    这篇文章主要为大家详细介绍了js实现简单的倒计时,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01

最新评论