Как настроить последовательные независимые записи с помощью webAudio-API
Нет проблем, чтобы записать микрофон, подключите анализатор для хорошего вю-метра, повторно сэмплируйте огромный объем данных в то, что мы можем обработать (8 кГц, моно), используя "xaudio.js" из библиотеки speex.js и обернуть это в соответствующий конверт WAV.
Остановка рекордера кажется другой историей, потому что процесс записи сильно отстает от функции onaudioprocess. Но даже это не проблема, поскольку я могу рассчитать недостающие образцы и подождать, пока они прибудут, прежде чем я действительно сохраню данные.
А что теперь? Как я могу остановить аудиопроцесс от вызова onaudioprocess? Отключение всех узлов не имеет значения. Как я могу повторно инициализировать все буферы, чтобы создать чистую и свежую точку перехода для следующей записи? Должен ли я уничтожить AudioContext? Как бы я это сделал? Или этого достаточно, чтобы 'обнулить' createMediaStreamSource?
Что нужно сделать, чтобы по-настоящему настроить все для последовательных независимых записей?
Любая подсказка приветствуется.
1 ответ
Я не уверен во всей вашей структуре кода; лично я попытался бы держаться за AudioContext и входной поток (от обратного вызова getUserMedia), даже если бы я удалил MediaStreamSourceNode.
Однако, чтобы избавиться от ScriptProcessor - установите для.onaudioprocess в узле обработчика сценариев значение null. Это остановит вызов обратного вызова - тогда, если вы отключите его и освободите все ссылки, он должен быть собран как обычно.
[править] О, и единственный способ удалить AudioContext - это избавиться от любой происходящей обработки (отключить все узлы, удалить любой onaudioprocess), удалить все ссылки на него и дождаться его сбора.