Web Audio API 的运用

您所在的位置:网站首页 Audio的电脑扬声器 Web Audio API 的运用

Web Audio API 的运用

2024-02-02 03:12| 来源: 网络整理| 查看: 265

当在网页上播放声音时,让用户能控制它是很重要的。根据使用场景,有无数的选项可用,但这我们将提供播放/暂停声音,改变音轨音量及从左到右平移声音的功能。

通过 JavaScript 代码控制声音会受到浏览器的自动播放策略的影响 (autoplay support policies),因此在未经用户(或白名单)许可的情况下脚本对声音的控制会被阻止。浏览器的自动播放策略通常要求显式权限或者用户与页面产生互动后,才允许脚本触发音频播放。

这些特殊的要求基本上是因为意外的声音可能会打扰到用户,令人厌烦,并且可能导致无障碍问题。你可以在文章 媒体与 Web 音频 API 自动播放指南 了解更多相关信息。

因为我们的脚本正响应用户输入(例如,点击播放按钮)进行播放音频,我们状态良好且应该没有自动播放阻止的问题。所以,让我们看看我们的播放和暂停功能。我们有一个当音频播放时变为暂停按钮的播放按钮:

html Play/Pause

在我们可以播放音频前我们需要将我们的音频图从音频源/输入节点连接到目的地。

我们已经通过把音频元素传入 API 生成一个输入节点。在大多数情况下,你不需要生成一个输出节点,你只需要将其他节点连接到可以为你处理这种情况的 BaseAudioContext.destination:

jstrack.connect(audioContext.destination);

可视化这些节点的一个好方法是绘制音频图形以便可视化它。这是我们当前的音频图:

现在我们可以添加播放和暂停功能。

js// select our play button const playButton = document.querySelector("button"); playButton.addEventListener( "click", function () { // check if context is in suspended state (autoplay policy) if (audioContext.state === "suspended") { audioContext.resume(); } // play or pause track depending on state if (this.dataset.playing === "false") { audioElement.play(); this.dataset.playing = "true"; } else if (this.dataset.playing === "true") { audioElement.pause(); this.dataset.playing = "false"; } }, false, );

我们也需要考虑到当音频播放完毕后做什么。我们的 HTMLMediaElement 一旦播放完毕会触发一个 ended 事件,所以我们可以监听它并运行相应代码:

jsaudioElement.addEventListener( "ended", () => { playButton.dataset.playing = "false"; }, false, );


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3