百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术文章 > 正文

Web 应用 2D/3D 音频控制库 音频控件

myzbx 2024-12-28 14:19 23 浏览

howlerjs 是一个轻量级的 JavaScript 音频库,适用于在 Web 应用中集成音频功能,无论简单的背景音乐播放,复杂的音频、游戏,3D 音效管理,howler 都可以提供强大而灵活的音频控制能力,包括播放、暂停、快进、快退、调整播放速率、音量控制、淡入淡出效果和循环播放等。

安装使用:

import { Howl, Howler } from 'howler';
// 初始化
const sound = new Howl({
  src: ['sound.webm', 'xxx.mp3']
});
// 播放
sound.play();
// 音量控制
Howler.volume(0.5);

示例:

基础配置:

src:定义要加载的音频轨道的源文件,可以是 URL 或 base64 数据。如果文件没有扩展名,需要使用 format 属性明确指定格式。

volume:设置特定音轨的音量,范围从 0.0 到 1.0。

html5:是否强制使用 HTML5 Audio,适用于大文件,以便不必等待整个文件下载和解码完成即可播放。

loop:是否无限循环播放。

preload:是否自动开始下载音频文件。如果使用 HTML5 Audio,可以设置为 'metadata' 预加载数据。

autoplay:是否自动开始播放。

mute:是否加载时静音音频。

sprite: 定义音频精灵。偏移量和持续时间以毫秒为单位定义。可选的第三个参数用于设置精灵是否循环。

rate:设置播放速率,范围从 0.5 到 4.0,1.0 为正常速度。

pool:定义非活动声音池的大小。停止或播放结束的声音会被标记为结束并准备清理,以提高性能。

format:howler 会自动检测文件格式,但在某些情况下(如 SoundCloud 流)可能需要明确指定格式。

xhr:使用 Web Audio 时,howler 使用 XHR 请求加载音频文件。如果需要发送自定义头部、设置 HTTP 方法或启用 withCredentials,可以使用此参数。

onload:当声音加载完成时触发。

onloaderror:当声音无法加载时触发。

onplayerror:当声音无法播放时触发。

onplay:当声音开始播放时触发。

onend:当声音播放结束时触发(如果是循环播放,则在每次循环结束时触发)。

onpause:当声音被暂停时触发。

onstop:当声音被停止时触发。

onmute:当声音被静音或取消静音时触发。

onvolume:当声音的音量改变时触发。

onrate:当声音的播放速率改变时触发。

onseek:当声音被快进或快退时触发。

onfade:当声音完成淡入或淡出时触发。

onunlock:当音频通过触摸/点击事件自动解锁时触发。

3D 音频配置:

orientation:设置音频源在 3D 笛卡尔坐标空间中指向的方向。根据声音的锥形属性,指向远离监听器的声音可能会变得安静或无声。数组中的三个值分别代表在 X、Y、Z 轴上的方向向量,默认值为 [1, 0, 0]。

stereo:设置音频源的立体声平移值,用于控制声音在左右声道之间的平衡。-1.0 表示完全在左侧,1.0 表示完全在右侧。

pos:设置音频源在 3D 空间中的位置,相对于全局监听器的位置。数组中的三个值分别代表在 X、Y、Z 轴上的位置。

pannerAttr:设置声音或声音组的 panner 节点属性。可以使用 pannerAttr 方法来设置所有可用的选项。

onstereo:当当前声音的立体声平移值改变时触发。

onpos:当当前声音的监听器位置改变时触发。

onorientation:当当前声音的监听器方向改变时触发。

功能和特性:

音频精灵:允许开发者将多个音频片段组合到一个文件中,这样可以减少 HTTP 请求的数量,提高加载效率。

空间音频:howler 支持立体声和 3D 音频效果,使得开发者可以创建具有空间感的音频体验。

全编解码器支持:howler 支持多种音频格式,包括但不限于 MP3、MPEG、OPUS、OGG、OGA、WAV、AAC、CAF、M4A、MP4、WEBA、WEBM、DOLBY 和 FLAC。

跨平台兼容性:howler 默认使用 Web Audio API,如果浏览器不支持,则回退到 HTML5 Audio。这种设计确保了它可以在所有主流浏览器和平台上运行。

自动缓存:howler 会自动缓存加载的音频文件,并在后续的调用中重用这些缓存,这样可以提高性能并减少带宽消耗。

模块化:howler 的模块化架构允许开发者只加载所需的部分,这样可以减少最终应用的体积。同时,开发者也可以根据需要扩展库,添加自定义功能。

使用场景:

游戏开发:在游戏开发中,howler 可以用来管理背景音乐、音效和角色语音。

多媒体应用:在需要播放音频的多媒体应用中,howler 提供了丰富的控制选项和良好的用户体验。

教育工具:在教育应用中,howler 可以用来创建互动式音频教程和语音反馈。

音乐播放器:howler 可以用来创建自定义的音乐播放器,支持多种音频格式和播放控制。


《前端资源推荐》收集各种前端组件 UI 框架、JS 插件工具、中后台系统模板、动画库、低代码、可视化资源、开源项目、学习资源、特效源码等,如有其他优秀资源,欢迎发消息投稿,感谢点赞、转发、关注!!!

GitHub:https://github.com/goldfire/howler.js

官方文档:https://howlerjs.com/

相关推荐

如何用5分钟开发一个 Webpack Loader?

嗨,我是勾勾。今天分享的内容是如何开发一个简单的WebpackLoader,希望通过这个过程能够让你Get到WebpackLoader的工作原理与机制。Loader作为Webpack...

前端——CORS跨域请求的限制与解决

node中设置允许跨域如果需要设置多个域允许跨域,可以根据req请求的地址进行写入不同的header;consthttp=require('http')http.cre...

5分钟看懂的WebAssembly入门指南(webassembly开发)

子肃阿里开发者2023-06-2009:01发表于浙江阿里妹导读本文是一篇WebAssembly的入门文章,从理论介绍到实战方面有全面的讲述。历史进程由于javascript的动态类型特性...

刚刚发布!Claude 4连续工作7小时,比Cursor、Copilot还猛?

你见过不吃不喝、连续工作7小时的“程序员”吗?Anthropic最新发布的Claude4,不只是AI,更像是你团队里的CTO。一、什么是Claude4?别急,这不是你熟悉的GPT“亲戚”202...

JS对象判空的几种方式,你真的会了吗?

前言:为什么空对象检测如此重要?在开发中我们经常会遇到这样的场景:if(isEmpty(userInfo)){//跳转登录页}四种主流检测方案对比方案一:Object.keys()基础版fun...

密码被破译,行踪被美军全程掌握,日本海军军神命丧太平洋

【军武次位面】FriedrichLau一.突袭1941年12月7日,伴随着日军偷袭美军位于珍珠港的基地,美国也终于卷入了这场绵延全球的战火之中。为了报复日军这一行动,美军随后打出了一套组合拳,除了在太...

提示词技术详解(2)——零样本提示词

一、零样本提示(Zero-Shot)是一种会起到作用的办法。首先让模型重写提示词,然后把重写后的提示词再发给模型,以期提升回答效果。论文给出的提示词如下,仅供参考。给定一位用户的以下文字,提取其中不带...

这些流行饮料的中文名称,你会说吗?

[Photo/Pexels]Summerisinfullswing,andtheweatherishot!Tohelpyoucooldown,coldandrefre...

密码被破译多可怕?被美军全程盯梢,日本海军军神命丧太平洋

【军武次位面】FriedrichLau一.突袭1941年12月7日,伴随着日军偷袭美军位于珍珠港的基地,美国也终于卷入了这场绵延全球的战火之中。为了报复日军这一行动,美军随后打出了一套组合拳,除了在太...

一课译词:刀子嘴(刀子嘴是什么)

你身边一定有一些人,他们的言语总是那么尖锐、刺耳,但内心却又格外善良柔软,了解他们的人都知道,他们其实只是“刀子嘴,豆腐心”。“刀子嘴”,形容人说话十分刻薄(speaksarcasticallya...

捷克插画家柯薇塔·巴可维斯卡逝世,曾为《灰姑娘》绘制插图

柯瑞塔·巴可维斯卡。(图源:捷克共和国文化部)据捷克多家媒体消息,当地时间2月6日,捷克插画家柯薇塔·巴可维斯卡逝世,享年94岁。该消息经由她的儿子斯特潘·格里格(StěpánGrygar)证实。柯...

网络“匿名提问箱”成年轻人社交新宠 为何这么火?

网络“匿名提问箱”成为年轻人社交新宠“来自陌生人的关心”为什么这么火?“年度歌单里排名第一的是哪首歌?”“未来十年你的人生规划?”“有没有被甩过?”最近,这种别人能够匿名向自己提问的“提问箱”越来越得...

美国要开始搞6G了?专家:关键技术仍在摸索

2月21日,美国总统特朗普发推特“我希望5G乃至6G早日在美国落地”。日前,美国联邦通信委员会朝着特朗普的指示迈出了第一步,决定开放95千兆赫到3太赫兹频段,供6G实验使用。纽约大学教授泰德·拉帕波特...

常见的连续型随机变量(1)(连续型随机变量的定义与性质)

1.均匀分布在概率论和统计学中,均匀分布也叫矩形分布,它是对称概率分布,在相同长度间隔的分布概率是等可能的。均匀分布由两个参数a和b定义,它们是数轴上的最小值和最大值,通常缩写为U(a,b)。统计...

身高表上的-2SD、-1SD、中位数.....都是啥?和百分位有关系吗?

上周日晚,小编正气呼呼地和娃上演“作业拉锯战”时,“叮”的一声,一条微信发了过来。无独有偶,第二天又有朋友发来门诊记录,不知道SD什么意思。从家长应用的角度来看,无需太纠结,根据个人习惯选择即可。从生...