Загрузить audiodata в AudioBufferSourceNode из элемента через createMediaElementSource?

возможно ли загрузить аудиофайл из <audio/>-элемент через createMediaElementSource а затем загрузите звуковые данные в AudioBufferSourceNode?

использование аудио-элемента в качестве источника (MediaElementSource), похоже, не является вариантом, поскольку я хочу использовать буферные методы, такие как noteOn и noteGrain.

загрузка аудиофайла непосредственно в буфер через XHR, к сожалению, не является вариантом ни ( см. открыть stream_url трека Soundcloud через клиентскую сторону XHR?)

загрузка содержимого буфера из аудиоэлементов кажется возможной, хотя:

http://www.w3.org/2011/audio/wiki/Spec_Differences#Reading_Data_from_a_Media_Element

или даже можно напрямую использовать буфер <audio/>-элемент как sourceNode?

3 ответов


кажется, что невозможно извлечь аудиобуффер из MediaElementSourceNode.

см https://groups.google.com/a/chromium.org/forum/?fromgroups#!topic/chromium-html5/HkX1sP8ONKs

любой ответ, доказывающий, что я ошибаюсь, очень приветствуется!


это возможно. См. мой пост вhttp://updates.html5rocks.com/2012/02/HTML5-audio-and-the-Web-Audio-API-are-BFFs. Существует также фрагмент кода и пример. Есть несколько выдающихся ошибок, но загрузка <audio> в веб-аудио API должен работать так, как вы хотите.


Я не уверен, что вы нашли лучшее решение, и я также проверил ссылку W3C, которую вы опубликовали: http://www.w3.org/2011/audio/wiki/Spec_Differences#Reading_Data_from_a_Media_Element

но для того, чтобы он действительно работал, вы должны использовать AudioContext.createScriptProcessor(). Я еще не пробовал это, но в основном вы подключаете исходный узел (звуковой элемент) к процессору скриптов, но затем даже не выводите звук, если он вам не нужен. В onaudioprocess обратный звонок у вас есть прямой доступ к данным аудио буфера (в кусках указанного размера, конечно). Примеры приведены в ссылке выше.

также я думаю, что вы можете как-то настроить скорость воспроизведения, чтобы быстрее получить больше буферных массивов.