Справочная информация: я разрабатываю совместимую с WebAudio версию MusicFolder 2, медиаплеера с возможностью воспроизведения без пауз.Он должен поддерживать как очень большие аудиофайлы (часы), так и миксы, которые были разбиты на отдельные аудиофайлы, которые должны воспроизводиться непрерывно без какого-либо заметного пропадания звука между дорожками.
Я пробовалиспользуя decodeAudioData и два экземпляра AudioBufferSourceNode, которые по очереди, но потребление больших объемов аудиофайлов слишком велико, особенно потому, что различные реализации Webaudio не могут собирать мусор (известные ошибки).
В качестве альтернативы я реализовалверсия вокруг HTMLMediaElement и соответствующего источника AudioNode, но здесь проблема в том, что я не могу точно запланировать начало элемента audio для воспроизведения без пауз.Я пробовал различные методы, такие как вызов .play () для второго аудиоэлемента с GainNode, установленным в 0, и затем переключение на него, как только другой закончил воспроизведение (событие «закончили»), а затем установил .currentTime в 0, нодаже поиск уже играющего элемента до 0 занимает слишком много времени.
Есть ли способ ускорить .play () или поиск или планирование любого из них на точное время?
ВВ производственной реализации в App Store я использую встроенный в iOS AVAudioPlayer, который имеет функцию «prepareToPlay», которую можно вызывать заранее и обеспечивает немедленное воспроизведение при вызове «play».