ScriptProcessorNode node = context.createScriptProcessor(bufferSize, numberOfInputChannels, numberOfOutputChannels);
ScriptProcessorNode 接口
interface ScriptProcessorNode : AudioNode {
attribute EventHandler onaudioprocess;
readonly attribute long bufferSize;
};
ScriptProcessorNode接口:这个接口是一个AudioNode类型的,它作用是用JavaScript来生成、处理或分析audio。
构造ScriptProcessorNode时需要一个bufferSize参数, bufferSize的值必须是256, 512, 1024, 2048, 4096, 8192, 16384其中一个。
bufferSize这个值是控制着多长时间需触发一次audioprocess事件。无论有多少这样的帧每次都需要调用它
ScriptProcessorNode中最少有一个输入或输出被连接的话,那么就触发audioprocess事件。
如果bufferSize选择的值越小,那么返回数据时延迟时间越短。
如果bufferSize选择的值越大,那么会避免audio输入的数据间隔过大或出现其它问题。
如果createScriptProcessor函数中bufferSize为null或0的话,那么bufferSize这个值会自动选择一个值
numberOfInputChannels 和 numberOfOutputChannels 确定输入管道或输出管道的数据,numberOfInputChannels 和 numberOfOutputChannels二者有一个为0,它就是个数据是无效的
AudioProcessingEvent:Event接口
interface AudioProcessingEvent : Event {
readonly attribute double playbackTime;
readonly attribute AudioBuffer inputBuffer;
readonly attribute AudioBuffer outputBuffer;
};
这个事件对象作为ScriptProcessorNode节点的audioprocess函数中的参数发送过来的。
AudioProcessiongEvent事件有三个属性
readonly attribute double playbackTime;
当前音频播放的位置
readonly attribute AudioBuffer inputBuffer;
一个包含AudioBuffer的输入音频数据。这个数值等同于createScriptProcessor()函数的numberOfInputChannels参数,这个AudioBuffer仅在onaudioprocess函数中有效,在函数外是无效的。
readonly attribute AudioBuffer outputBuffer;
一个包含AudioBuffer的输出音频数据.这个数值等同于createScriptProcessor()函数的numberOfOutputChannels参数,这个AudioBuffer仅在onaudioprocess函数中有效,在函数外是无效的。