使用 Web Audio API 为声音的开头添加静音 [关闭]

Posted

技术标签:

【中文标题】使用 Web Audio API 为声音的开头添加静音 [关闭]【英文标题】:Using Web Audio API to add silence to beginning of sound [closed] 【发布时间】:2016-10-07 13:57:00 【问题描述】:

我发现可以使用 javascript (https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createBuffer) 创建音频缓冲区。我仍然不确定这个 API 是做什么的,但我想知道是否有办法在 .ogg 文件前添加 x 秒的静音并在浏览器中播放?

编辑:

目的是创建一个即使长时间超时也能在移动浏览器上工作的计时器。如果手机进入睡眠状态,SetTimeoutSetInterval 将停止(以及其他 JavaScript 代码)。我的解决方法是创建一个声音文件,其中包含 40 分钟的静音,然后播放警铃(即使 JavaScript 不再在后台选项卡中执行,声音也会在后台继续播放)。但是创建这样的文件不是很灵活并且会消耗流量。我想使用这个 API 来完成我所描述的,而不用创建一个文件,并离线使用静音 + 铃声。

【问题讨论】:

@Kaiido 我已经更新了问题并添加了描述 我建议更多地了解 JavaScript 及其在移动浏览器上的工作原理,并对 Web Audio API 进行更多研究。就目前的问题而言,听起来您是在要求 SO 上的志愿者为您编写大量代码…… @MikeMcCaughan 在我决定进入 Web API 之前,我只想知道是否可以做我想做的事。我不确定。 Stack Overflow 并不是真正的 "is it possible" questions go over well 站点。答案几乎总是“试试看”。如果你把问题改成“我是怎么做的”,显然我是无意识地这样做的,那么你可以看到它太宽泛了。 【参考方案1】:

也许这也可以解决您的问题。我以另一种方式归档了这种行为。我只是在播放声音之前等待了 x 秒。

我的代码看起来像

var audio = new Audio('sound.mp3');

function start() 
    audio.play();


setTimeout(start, 2000);

您可以使用 x 来代替 2000,然后将其乘以 1000。

它对你有用还是我遗漏了一点?

【讨论】:

鉴于当前问题的不明确,我会说这是一个聪明的解决方案;-) 问题是这在手机处于睡眠状态时不起作用。我的问题可能不是很精确。正在编辑它。

以上是关于使用 Web Audio API 为声音的开头添加静音 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Web Audio API 如何命名声音

Web Audio API:将 mp3 声音流合并到一个文件并在 <audio> 标签中播放

暂停 Web Audio API 声音播放

Web Audio API - 获取正确的频率

使用 Web Audio API 将两个声音分配给两个 Div,并通过带有 javascript 的 click 事件独立播放

WEB AUDIO API 产生雨水噼啪声