Почему метод остановки в AudioBufferNode уничтожает его?

StackOverflow https://stackoverflow.com//questions/24024334

  •  21-12-2019
  •  | 
  •  

Вопрос

Мы знаем, что когда вы вызываете #.stop() на AudioBufferNode вы не сможете #.start().Почему такое поведение?

Эта проблема возникла при работе с WebAudio API, и мы все рано или поздно обнаруживаем это при попытке реализовать функцию паузы.Что меня заинтересовало, так это то, что я понимаю, что это стрим, и его нельзя просто «приостановить».Но почему его разрушают?Разве внутри нет указателя на данные или данные просто передаются в пункт назначения и забываются буфером?

Это было полезно?

Решение

Вы не вызываете .stop() для AudioBuffer, вы вызываете .stop() для BufferSourceNode — AudioBuffer можно использовать несколько раз.

Вкратце, это оптимизация, которая позволяет очень легко воспроизводить буферы по принципу «запустил и забыл» — вы можете построить на основе этого медиаплеер более высокого уровня, но сами по себе BufferSourceNodes очень легкие.Сами звуковые данные не забываются и могут быть использованы повторно (фактически, одновременно другими узлами BufferSourceNodes), поскольку они находятся в отдельном объекте AudioBuffer.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top