ScriptProcessorNode:audioprocess 事件
已弃用: 此功能不再推荐。尽管某些浏览器可能仍然支持它,但它可能已从相关 Web 标准中移除,可能正在被删除,或者可能仅出于兼容性目的而保留。请避免使用它,如果可能,请更新现有代码;请参阅此页面底部的 兼容性表 来指导您的决定。请注意,此功能可能随时停止工作。
ScriptProcessorNode
接口的 audioprocess
事件在脚本处理器的输入缓冲区准备就绪以进行处理时触发。
注意: 此功能已被 AudioWorklets 和 AudioWorkletNode
接口取代。
此事件不可取消且不冒泡。
事件类型
一个 AudioProcessingEvent
。继承自 Event
。
事件属性
还实现了从其父级 Event
继承的属性。
playbackTime
只读-
一个双精度值,表示音频将播放的时间,由
AudioContext.currentTime
的时间定义。 inputBuffer
只读-
一个
AudioBuffer
,它包含要处理的输入音频数据的缓冲区。通道数由工厂方法AudioContext.createScriptProcessor()
的参数numberOfInputChannels
定义。请注意,返回的AudioBuffer
仅在事件处理程序范围内有效。 outputBuffer
只读-
一个
AudioBuffer
,它是应该写入输出音频数据的缓冲区。通道数由工厂方法AudioContext.createScriptProcessor()
的参数numberOfOutputChannels
定义。请注意,返回的AudioBuffer
仅在事件处理程序范围内有效。
示例
scriptNode.addEventListener("audioprocess", (audioProcessingEvent) => {
// The input buffer is a song we loaded earlier
const inputBuffer = audioProcessingEvent.inputBuffer;
// The output buffer contains the samples that will be modified and played
const outputBuffer = audioProcessingEvent.outputBuffer;
// Loop through the output channels (in this case there is only one)
for (let channel = 0; channel < outputBuffer.numberOfChannels; channel++) {
const inputData = inputBuffer.getChannelData(channel);
const outputData = outputBuffer.getChannelData(channel);
// Loop through the 4096 samples
for (let sample = 0; sample < inputBuffer.length; sample++) {
// make output equal to the same as the input
outputData[sample] = inputData[sample];
// add noise to each output sample
outputData[sample] += (Math.random() * 2 - 1) * 0.2;
}
}
});
你也可以使用 onaudioprocess
属性设置事件处理程序
scriptNode.onaudioprocess = (audioProcessingEvent) => {
// ...
};
规范
自 2014 年 8 月 29 日 Web 音频 API 规范 发布以来,此功能已被弃用。它不再处于成为标准的轨道上。
它已被 AudioWorklets 和 AudioWorkletNode
接口取代。
浏览器兼容性
BCD 表只在浏览器中加载