AudioBufferSourceNode: start() 方法
AudioBufferSourceNode 接口的 start() 方法用于调度缓冲区中包含的音频数据的播放,或立即开始播放。
语法
start(when)
start(when, offset)
start(when, offset, duration)
参数
when可选-
声音应该开始播放的时间(以秒为单位),使用与
AudioContext相同的时坐标系。如果when小于 (AudioContext.currentTime),或者为 0,则声音会立即开始播放。默认值为 0。 offset可选-
一个偏移量,以与
AudioContext相同的时坐标系下的秒数指定,表示在音频缓冲区内播放应该开始的时间。例如,要在一个 10 秒的音频剪辑中途开始播放,offset应该为 5。默认值 0 会从音频缓冲区的开头开始播放,超过音频末尾(基于音频缓冲区的duration和/或loopEnd属性)的偏移量将被静默地限制在允许的最大值。到声音的偏移量的计算是使用声音缓冲区的自然采样率进行的,而不是当前播放速率,因此即使声音以正常速度的两倍播放,一个 10 秒的音频缓冲区的中间点仍然是 5。 duration可选-
要播放的声音的时长,以秒为单位指定。如果未指定此参数,则声音会一直播放直到自然结束,或者使用
stop()方法停止。使用此参数在功能上等同于调用start(when, offset)然后调用stop(when+duration)。
返回值
无(undefined)。
异常
TypeError-
如果为三个时间参数中的一个或多个指定了负值,则抛出此异常。请不要试图干扰时间物理定律。
InvalidStateErrorDOMException-
如果
start()已经被调用,则抛出此异常。在AudioBufferSourceNode的生命周期中,您只能调用此函数一次。
示例
最简单的例子就是让音频缓冲区从头开始播放——在这种情况下,您不需要指定任何参数。
source.start();
以下更复杂的示例将从现在起 1 秒后开始播放音频缓冲区中从第 3 秒开始的 10 秒声音。
source.start(audioCtx.currentTime + 1, 3, 10);
注意: 有关 start() 用法的更完整示例,请查看我们的 AudioContext.decodeAudioData() 示例。您也可以 尝试实时示例,并查看 示例源代码。
规范
| 规范 |
|---|
| Web Audio API # dom-audiobuffersourcenode-start |
浏览器兼容性
加载中…