【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

中国大模型开源创新与合作的新篇章 | 2023 CCF中国开源大会

OpenI启智社区

开源 大模型 OpenI启智社区 CCF中国开源大会 鹏城·脑海大模型

手把手|支付宝异步通知如何使用

盐焗代码虾

安全 支付宝 异步通知

后 Cookie 时代如何实现精准的用户运营与管理?

Authing

低代码 Idaas 用户管理 Authing 用户运营

软件测试|第二届、第三届<火焰杯>软件测试开发选拔赛河北赛区颁奖典礼落幕

霍格沃兹测试开发学社

浅谈RabbitMQ的延迟队列

高端章鱼哥

RabbitMQ 延迟队列

文心一言 VS 讯飞星火 VS chatgpt (119)-- 算法导论10.3 4题

福大大架构师每日一题

福大大架构师每日一题

面对“双十一”这样的大促,品牌方还能多做些什么?

博文视点Broadview

美国站群服务器配置指南,帮你轻松管理多个网站

一只扑棱蛾子

站群服务器 美国服务器 美国站群服务器

天翼云以领先云网算力,为工业信息化筑牢算力底座

Geek_2d6073

ARB链(Arbitrum)ARBT代币合约质押挖矿系统开发(源码技术搭建)

l8l259l3365

2024深圳电子展

AIOTE智博会

电子展 深圳电子展 电子信息展 深圳电子信息展

测吧(北京)科技有限公司项目总监王雪冬一行访问计算机学院探讨合作

霍格沃兹测试开发学社

2023年行云绽放&傲冠股份厨艺比拼团建活动圆满结束

行云管家

行云 团建 傲冠

第5期 | GPTSecurity周报

云起无垠

LLM 新缺陷曝光,自我纠正成功率仅 1%;苹果超 95% 产品仍在中国制造丨 RTE 开发者日报 Vol.72

声网

自定义MyBatis拦截器更改表名

emanjusaka

Java mybatis

NFTScan | 10.16~10.22 NFT 市场热点汇总

NFT Research

NFT NFTScan nft工具

合约开发 - DAPP开发 - swap开发

西安链酷科技

swap链游 合约交易所开发 dapp开发 NFT开发

飞码LowCode前端技术系列(一):数据结构设计 | 京东云技术团队

京东科技开发者

低代码 营销 企业号10月PK榜 web页面搭建

Mac电脑音频修复和增强推荐 iZotope RX 10最新激活版

胖墩儿不胖y

Mac软件 音频修复 音频增强软件

行云管家祝各位程序员节日快乐!

行云管家

程序员 程序员节

四川华新学院在“火焰杯”软件测试高校就业选拔赛取得佳绩

测试人

软件测试

FC红白机游戏600合集 for mac

展初云

Mac 游戏 FC 红白机游戏

OpenHarmony Meetup成都站招募令

OpenHarmony开发者

OpenHarmony

一次单据图片处理的优化实践 | 京东物流技术团队

京东科技开发者

性能优化 图片处理 pdfbox 企业号10月PK榜

IDEA工具第二篇:自定义Java方法注释模板 | 京东云技术团队

京东科技开发者

Java IDEA 参数 注释 企业号10月PK榜

仅需2分钟 让智慧助手小艺用你的声音时刻陪伴老人

最新动态

【CIKM 2023】扩散模型加速采样算法OLSS,大幅提升模型推理速度

阿里云大数据AI技术

算法

Mac电脑屏幕录像 Iris最新直装激活版

mac大玩家j

录屏软件 Mac软件 Mac好用的屏幕录制软件

深度学习应用开发示例之“定位编码”

矩视智能

深度学习 机器视觉

Perforce发布《2023游戏开发与设计现状报告》,洞察游戏行业的改变与2023年最令人兴奋的行业动向

龙智—DevSecOps解决方案

游戏开发

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