NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

JavaScript 音频库 Howler.js 2.0 版改进了 Web 音频的播放

  • 2016-08-02
  • 本文字数:1420 字

    阅读完需:约 5 分钟

JavaScript 音频库 Howler.js 当前已升级到 2.0 版本。该版本的更新中包括了“一系列的功能添加与改进”。

Howler.js 的作者 James Simpson ,也是游戏开发工作室 Goldfire Studios 的创建者,指出该版本是一次“彻底地改写”,并已完全地兼容 HTML5 和 Web Audio API。Simpson 随即指出这归功于数十名项目贡献者的工作。

Simpson 在博客帖子“ Howler.js 2.0 版发布了”中,将 howler.js 描述成“模块化的程序库”。文中提及 howler.js 考虑到去实现“可扩展添加更多高级功能的精益内核,例如若干支持 Web Audio API 扩展部分(空间音频、空间滤波器)的可用工具”。

“现在 Howler.js 已经模块化了。该内核体现了 howler.js 的初始目标,”Simpson 说,“该音频库提供使用 Web Audio API 的空间插件,这样增加了对空间和立体声支持。”

2.0 版本的最大改进是使用一种三层实现方法解决了在多种声音回放时的混淆问题,这也是 1.X 版本系列中的一个显著痛点。

这个改进需要开发人员更改使用 howler.js 处理音频的方法。Simpson 指出:

当前版本中的概念包括:全局(Howler)、组(Howl)和声音个体(Sound)。为对回放具有更好的控制,无论实现中是否使用了 Sprite 类,每个播放的声音都应去获取其可操控的 Sound 对象。这样,对于此后同一组中的一个或多个声音都可使用 Howl 对象的方法调用。

复制代码
Howler (全局) ->
Howl(组) ->
Sound(个体)

此外,在这次 howler.js 的重大升级中所提供的新方法包括:设置具有一旦触发就可自动自我移除特性的事件监听器的 once 方法、对当前正在播放的声音返回真值的 playing 方法、返回音源持续时间的 duration 方法、返回 Howl 对象加载状态的 state 方法,以及全新实现的全局 unload 方法,该方法卸载所有活动 Howl 对象并重置 AudioContext 对象,用于内存的清理。

Howler 2.0 版本还实现了对一些倍受欢迎功能的支持,包括:对 Dolby 音频和 CAFF 音频文件回放的支持,对除了.weba 类型文件以外的.webm 类型文件的支持。

版本中还实现了一些 howler.js 补丁,意图解决该音频库中的若干程序缺陷,其中包括对 ext 选项的改进,这使得该选项更加适用于音频流的播放(并在版本中提供了例子 SoundCloud)。此外,Howler.js 2.0 版解决了 unload 方法使用中潜在的内存泄漏问题,并且该 JavaScipt 库会自动回退到 HTML5 Audio 以兼容 HTTPS 页面内的 HTTP 文件的加载。

在 2.0 版本的所有突破性更新中,一个重要更新是 play 方法不再以回调函数形式使用,而是即时返回当前回放声音的标识符。Simpson 指出这意味着 play 方法将不能再以链接方式使用,但是他也阐明对其它方法的调用并未改变。

复制代码
// 获取给定回放声音的标识符。
var id = sound.play();
// 暂停回放。
sound.pause(id);

另一个重要革新是新版本中弃用了 fadeIn 和 fadeOut 方法,以支持单一的 fade 方法。

复制代码
// 声音淡入。
sound.fade(0, 1, 1000);
// 一旦上一个音频淡化结束,声音淡出。
sound.once('fade', function(){
sound.fade(1, 0, 1000);
});

可在此处查看howler.js 2.0 版的完整的更新日志。Howler.js 使用 MIT 许可发布,当前已经得到包括谷歌、迪斯尼、乐高、Mozilla 以及 NASA 等的应用。

查看英文原文: Audio Library Howler.js Has 2.0 Release to Make Some Noise About


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-08-02 19:006374
用户头像

发布了 227 篇内容, 共 71.4 次阅读, 收获喜欢 27 次。

关注

评论

发布
暂无评论
发现更多内容

分享几个索引创建的小 Tips

江南一点雨

MySQL

Amazon CodeWhisperer 初体验

Coder9527

GreptimeDB 设计原则 — 云原生时序数据库,解决海量数据管理挑战

Greptime 格睿科技

数据库 分布式数据库 时序数据库 云原生数据库

屏幕调节亮度:Lunar pro 最新激活版下载

真大的脸盆

Mac Mac 软件 屏幕亮度调节

推进产业发展健全服务体系,中国信通院数字员工评测工作正式启动

王吉伟频道

RPA 机器人流程自动化 信通院 数字员工 数字员工评测

通过FP&A实践,释放企业深度价值

智达方通

全面预算管理 财务规划和分析 FP&A

数字赋农:数字农业新时代,致富之路宽又阔!

加入高科技仿生人

低代码 智慧农业 数字赋能 科技兴农

可持续发展的企业数智化底座究竟是什么样的?

用友BIP

白皮书 数智底座 数智平台 数智平台白皮书

Spring Boot 启动注解分析

江南一点雨

Java spring springboot

官宣!Databend 和 XSKY星辰天合达成合作

Databend

数据结构校验得心应手:Apifox 最佳实践

Liam

程序员 开发 Apifox API 接口工具

天翼云胡志强:依靠科技创新驱动高质量发展之路

说山水

又裁员25%?!金三银四好像消失了

引迈信息

程序员 面试 低代码 金三银四

圣邦股份:品类持续深挖,高端加速推进,模拟龙头稳健发展

华秋电子

软件测试/测试开发丨Pytest测试框架学习笔记

测试人

程序员 软件测试 pytest

海汽集团:业财共享服务中心建设推进集团数字治理

用友BIP

财务共享

又双叒叕种草了新家装风格?AI帮你家居换装

华为云开发者联盟

人工智能 华为云 华为云开发者联盟 企业号 6 月 PK 榜

「焱融科技」获中关村国际前沿科技创新大赛·大数据与云计算领域 TOP10

焱融科技

高性能 #文件存储 #分布式存储

全国信安标委“标准周”在昆明召开,腾讯安全受邀分享标准实践经验

说山水

小米基于 Flink 的实时数仓建设实践

Apache Flink

大数据 flink 实时计算

浅谈EOS区块链性能测试

BSN研习社

羽山数据SaaS平台新增供应商API自动上架功能

羽山数据

自动 自主研发 上架

巨梦征文 | 2023年第一期征文大赛| 报名请评论本文章

巨梦科技

数据隐私为先:EMQX Cloud BYOC 架构解析

EMQ映云科技

物联网 云服务 mqtt

中移链资源管理介绍

BSN研习社

软件测试/测试开发丨Pytest参数化用例学习笔记

测试人

程序员 软件测试 自动化测试 测试开发 pytest

LeetCode:2665. 计数器 II,闭包详解

Lee Chen

LeetCode

人脸识别图像技术的发展与挑战

来自四九城儿

2个场景实例讲解GaussDB(DWS)基表统计信息估算不准的处理方案

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

执行计划缓存,Prepared Statement性能跃升的秘密

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

5月《中国数据库行业分析报告》正式发布,首发时序、实时数据库两大【全球产业图谱】

墨天轮

数据库 tdengine 时序数据库 国产数据库 实时数据库

JavaScript音频库Howler.js 2.0版改进了Web音频的播放_JavaScript_James Chesters_InfoQ精选文章