速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

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:006620
用户头像

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

关注

评论

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

新一代云原生实时数仓 SelectDB 重磅发布!最全技术亮点解读都在这里了

SelectDB

数据库 云计算 大数据 数据仓库 云原生

ThingsBoard前端项目的安装与启动

echeverra

thingsboard

处理中国式报表,一款合适的BI商业智能工具尤为重要

小偏执o

chatGPT实战之「基于你的数据库,为你智能生成SQL」

非喵鱼

Java MySQL sql openai ChatGPT

OpenAI掌门人Sam Altman:AI的下一个发展阶段

OneFlow

人工智能 深度学习 openai

为什么新能源汽车上的IGBT会如此火爆?

元器件秋姐

半导体 新能源汽车 新能源 汽车芯片 功率半导体

APISIX Ingress 如何支持自定义插件

API7.ai 技术团队

Kubernetes 云原生 api 网关 APISIX Ingress Controller

Milvus 2.1.x 到 Milvus 2.2.x 升级实践

Zilliz

数据库 Milvus

BaseDet: 走过开发的弯路

MegEngineBot

深度学习 开源 目标检测 MegEngine BaseDet

阿里三面,讲讲不同场景下并发Map容器最优使用。凉凉送给自己

钟奕礼

Java 程序员 Java 面试 java编程

了不起的程序员们,瞧,你的 2023 年度惊喜终于来了!

图灵社区

程序员

airserver2023免费中文版下载

茶色酒

AirServer2023

HIFIVE音加加提供曲库、评分、修音功能的K歌SDK-iOS版本

HIFIVE音加加

ios 泛娱乐 版权音乐 K歌 K歌SDK

Github标星42K!不愧是腾讯云大神亲码的“redis深度笔记”

架构师之道

编程 程序员 java面试

激活海量数据价值,实现生产过程优化|智慧工厂系列专题07

EMQ映云科技

人工智能 物联网 IoT 云边协同 12 月 PK 榜

中大型企业组织为什么要选择私有化企业IM?

WorkPlus

顶级大咖齐聚云端,赛意信息这场数字化盛宴不容错过

科技热闻

团队新人多,稳定性经验不足,研发质量怎么保障?|TakinTalks论道

TakinTalks稳定性社区

技术管理

沉铜/黑孔/黑影工艺,PCB该选哪一种?

华秋PCB

工艺 PCB PCB设计

企业安全的移动办公平台应该具备哪些能力?

WorkPlus

英特尔梁雅莉:拥抱数字时代,满足日益增长的算力需求

科技之家

OpenMLDB 贡献者任务第六期 | 暖冬时节,活力继续

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

Wallys/industrial M.2 card/DR9074E vs DR90746E/Minipcie /qsdk/qcn9074

wallysSK

QCN9074 QCN9024 QCN9072 qcn9064

优化 20% 资源成本,新东方的 Serverless 实践之路

Serverless Devs

Serverless

知乎疯转30K+的微服务架构笔记,理论与实战齐飞!

小小怪下士

Java 微服务 架构设计

新闻速递 | KaiwuDB 亮相 DTCC 2022 线上大会并发表系列主题演讲

KaiwuDB

数据库

2022高通人工智能开发者大会暨高通人工智能应用创新大赛颁奖典礼圆满落幕

科技热闻

最近大火的高性能计算ChatGPT究竟是什么?

GPU算力

深度学习 高性能计算, ChatGPT

CorelDRAW2023离线下载安装步骤

茶色酒

CorelDraw2023

FLStudio21新版有哪些新功能推荐?

茶色酒

FLStudio21 FLStudio21.0.0

GPR政务流程再造赋能数字政府建设

张磊

人工智能 大数据 数字政务 流程再造 BPR

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