2016-04-13 4 views
0

У меня возник вопрос о внутренней работе ScriptProcessorNode. Во время события onaudioprocess мы обрабатываем наш javascript, сам ScriptProcessorNode поддерживает некоторый внутренний буфер для продолжения захвата и воспроизведения звука? Если у него есть внутреннее буферное пространство, насколько велика? Кроме того, может ли событие onaudioprocess инициироваться пользовательским событием?Сценарий ScriptProcessorNode

ответ

1

Аудиосистема поддерживает эти буферы, да, потому что она должна асинхронно передавать звук из аудиопотока (и обратно). Он не будет подавлять основную обработку аудиосистемы, но если вы не будете достаточно быстро реагировать на основной поток onaudioprocess, это сработает.

Буферы ... двухбуферизованные, я думаю? Я точно не помню. Размер блока, который вы передаете в ScriptProcessorNode, определяет их размер.

Наконец, вы НЕ МОЖЕТЕ вызывать onaudiprorocess с помощью пользовательского события (я думаю, вы могли бы, для тестирования, я думаю) - он предназначен для запуска, когда аудиосистеме требуется больше данных с узла процессора скриптов.

+0

Если он не может быть вызван пользовательским событием, вы можете отправить ему больше данных по мере их поступления. Если один из буферов данных недоступен, когда происходит событие onaudioprocess, мы должны ждать в обработке событий для данных или просто вернуться без данных и дождаться следующего события. – user2600798

+0

Проделали еще несколько тестов. Похоже, когда происходит событие onaudioprocess, вы должны заполнить буфер. Кажется, что ScriptProcessorNode срабатывает с фиксированным интервалом по размеру буфера. – user2600798