AudioBufferSourceNode: start() 方法

基线 广泛可用

此功能已经成熟,可以在许多设备和浏览器版本上运行。它自 2021 年 4 月.

报告反馈

语法

start() 方法是 AudioBufferSourceNode 接口的一种方法,用于安排播放缓冲区中包含的音频数据,或立即开始播放。
start(when)
start(when, offset)
start(when, offset, duration)

js

when 可选

声音应开始播放的时间(以秒为单位),与 AudioContext 使用的相同时间坐标系。如果 when 小于 (AudioContext.currentTime),或者为 0,则声音会立即开始播放。**默认值为 0。**

offset 可选

一个偏移量(以秒为单位,与 AudioContext 相同的时间坐标系),表示在音频缓冲区内应开始播放的时间。例如,要从 10 秒音频片段的中间开始播放,offset 应为 5。默认值为 0,表示从音频缓冲区的开头开始播放,而超过音频结尾的偏移量将被静默地限制在允许的最大值。对声音进行偏移的计算使用声音缓冲区的自然采样率,而不是当前播放率,因此即使声音以两倍于正常速度播放,10 秒音频缓冲区的中间点仍然是 5 秒。

duration 可选

要播放的声音的持续时间(以秒为单位)。如果未指定此参数,则声音将一直播放,直到其自然结束或使用 stop() 方法停止。使用此参数在功能上等同于调用 start(when, offset),然后调用 stop(when+duration)

返回值

无 (undefined).

异常

TypeError

如果为三个时间参数之一或全部指定了负值,则会抛出此异常。请不要尝试违反时间物理定律。

InvalidStateError DOMException

如果已调用 start(),则会抛出此异常。您只能在 AudioBufferSourceNode 的生命周期内调用此函数一次。

示例

最简单的示例只是从开头开始播放音频缓冲区 - 在这种情况下,您不需要指定任何参数

start() 方法是 AudioBufferSourceNode 接口的一种方法,用于安排播放缓冲区中包含的音频数据,或立即开始播放。
source.start();

以下更复杂的示例将在 1 秒后开始播放音频缓冲区中从第 3 秒开始的 10 秒声音。

start() 方法是 AudioBufferSourceNode 接口的一种方法,用于安排播放缓冲区中包含的音频数据,或立即开始播放。
source.start(audioCtx.currentTime + 1, 3, 10);

注意:有关使用 start() 的更完整示例,请查看我们的 AudioContext.decodeAudioData() 示例。您也可以 尝试在线运行该示例,并查看 示例源代码

规范

规范
Web 音频 API
# dom-audiobuffersourcenode-start

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅