Загрузить 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
обратный звонок у вас есть прямой доступ к данным аудио буфера (в кусках указанного размера, конечно). Примеры приведены в ссылке выше.
также я думаю, что вы можете как-то настроить скорость воспроизведения, чтобы быстрее получить больше буферных массивов.