Выберите веб-API для записи звука [закрыто]

Задача - реализовать диктофон на базе стандартного api веб-аудио. Тщательно изучив оба способа ScriptProcessorNode.onaudioprocess и AudioWorkletProcessor.process , не пришли к окончательному решению. Официально заявлено, что onaudioprocess устарел с 2014 года и его полная замена - это звуковые рабочие. Я новичок в javascript и, возможно, вопрос звучит глупо, но почему до сих пор активно используется onaudioprocess?

Давайте углубимся в детали. API AudioWorkletProcessor доступен 73% пользователей, а API onaudioprocess - 93%. В ближайшие 2 года можно надеяться на 10-процентный рост. (пользователи сафари). Есть много проектов, статей, решений, использующих онаудиопроцесс. Даже конкретные задачи можно решить просто с помощью аудиопроцесса. Такие решения невозможны для AudioWorklet. Документация AudioWorklet оставляет желать лучшего и мало упоминается в Интернете. Например, я до сих пор не понимаю, почему WebWorker знает, что такое большой двоичный объект, а AudioWorklet - нет (исключение devTools: Uncaught ReferenceError: Blob не определен). В машинописном тексте есть давно открытые кейсы для типов объявления базовой функциональности.. Все это создает впечатление, что аудиопроцесс живее, чем AudioWorklet. Возможно, AudioWorklet более продуктивен, но сложен в реализации, или API веб-аудио не нужен сообществу javascript? Объясните, почему я должен выбрать AudioWorklet согласно официальной рекомендации?

1 ответ

Решение

Вы задаете здесь много вопросов. Во-первых, вам будет приятно узнать, что Safari реализовал AudioWorklets. См. Https://wpt.fyi/webaudio .

Вторые WebWorkers и Worklets - разные вещи с разными возможностями. AudioWorklets - это Worklets, поэтому AudioWorklets получают только элементы Worklet, а не элементы WebWorker.

В-третьих, да, ScriptProcessorNode устарел, но по-прежнему широко используется. Вы можете увидеть это на https://www.chromestatus.com/metrics/feature/timeline/popularity/646 . Сравните это с https://www.chromestatus.com/metrics/feature/timeline/popularity/2263 для узла AudioWorkletNode.

Конечно, AudioWorklets - лучший вариант, но когда мне нужно что-то быстрое и грязное, и я не против обработки в основном потоке, я использую ScriptProcessorNode. Но если я делаю что-то качественное, я бы попробовал вместо этого использовать AudioWorkletNode.

Другие вопросы по тегам