如何 0 成本启动全员 AI 技能提升?戳> 了解详情
写点什么

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

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

关注

评论

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

Java面试过了京东五面之后,发现掌握了这些技术也没有那么难

钟奕礼

Java 编程 程序员 架构 面试

最新阿里蚂蚁金服四面(已拿offer)Java技术面经总结

钟奕礼

Java 编程 程序员 架构 面试

tensorflow实现低分辨率灰度图像分类算法

AI_robot

tensorflow实现cifar10彩色图像多类别分类

AI_robot

Mac openssl 未找到/加载失败问题处理

潮湿了我押韵的心情

简单架构图

李朋

架构 架构图

ndk开发前景,某大厂开发者对于Android多线程的总结,系列篇

欢喜学安卓

android 程序员 面试 移动开发

专访孙立坚:印度经济发展实力几何 ?

了了Vita

keras深度学习框架

AI_robot

JVM技术专题-逃逸分析介绍

码界西柚

Java JVM

有道云笔记新版编辑器架构设计(上)

有道技术团队

架构 大前端

大厂面试必问!2021新一波程序员跳槽季,附大厂真题面经

欢喜学安卓

android 程序员 面试 移动开发

云图说|将源端MongoDB业务搬迁至华为云DDS的几种方式

华为云开发者联盟

mongodb 数据迁移 华为云文档数据库服务 DDS 文档数据库

tensorflow实现像素级图像分割算法

AI_robot

民国最出名的女作家,为什么是她?

了了Vita

寻找音乐API接入正版音乐曲库?了解HIFIVE音乐开放平台!

曲多多(嗨翻屋)版权音乐

音乐api 正版曲库 音乐sdk

《月亮与六便士》:给你500万,你会用它买套房子还是周游世界?

了了Vita

tensorflow实现深度卷积生成对抗网络(DCGAN)生成手写数字图片

AI_robot

阿里巴巴研究员叔同:云原生是企业数字创新的最短路径

阿里巴巴中间件

云计算 Serverless 容器 云原生 Faas

面对不可避免的故障,我们造了一个“上帝视角”的控制台

阿里巴巴云原生

容器 微服务 云原生 监控 应用服务中间件

芯翌科技:技术理想主义的务实之旅

朋湖网

访问管理未来的四大趋势

龙归科技

网络安全 身份和访问管理

区块链农产品溯源--保护舌尖上的安全

13530558032

基于 docker 部署 jenkins(二)

李日盛

最全Java架构师技能树:Java编程+网络+设计模式+数据库+分布式

钟奕礼

Java 编程 程序员 架构 面试

深度学习keras像搭积木般构建神经网络模型

AI_robot

区块链底层Baas平台搭建,区块链政务底层平台开发

阿里天猫3面(Java研发):GC回收+Redis Hash算法+架构部署+秒杀等

钟奕礼

Java 编程 程序员 架构 面试

NodeJs中Buffer与Stream理解

小风以北

stream 原理 Node buffer

iOS开发:git上传代码到开源中国的步骤,以及pod的更新方法

花花

ios

springboot+redis+rabbitmq实现模拟秒杀系统(附带docker安装mysql,rabbitmq,redis教程)

yk

redis Docker 高并发 RabbitMQ

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