--- title: AudioContext.createMediaElementSource() slug: Web/API/AudioContext/createMediaElementSource translation_of: Web/API/AudioContext/createMediaElementSource ---
{{ APIRef("Web Audio API") }}
Метод createMediaElementSource()
интерфейса {{ domxref("AudioContext") }} используется для создания объекта {{ domxref("MediaElementAudioSourceNode") }} из существующих HTML элементов {{htmlelement("audio")}} или {{htmlelement("video")}} для дальнейших манипуляций со звуком и его воспроизведения.
Узнать больше о созданном таким образом аудио узле можно на справочной странице {{ domxref("MediaElementAudioSourceNode") }}.
var audioCtx = new AudioContext(); var source = audioCtx.createMediaElementSource(myMediaElement);
myMediaElement
Объект {{domxref("MediaElementAudioSourceNode")}}.
Простой пример создания аудио узла из элемента {{htmlelement("audio") }} используя createMediaElementSource()
, и управления усилением звука через {{ domxref("GainNode") }} перед подачей в {{ domxref("AudioDestinationNode") }} для воспроизведения. При движении мыши вызывается функция updatePage()
, вычисляющая текущее усиление как отношение Y позиции курсора к общей высоте окна. Таким образом Вы можете увеличивать/уменьшать громкость звучания аудио движениями мыши вверх/вниз.
Примечание: Вы можете также посмотреть демонстрацию или исходники.
var audioCtx = new (window.AudioContext || window.webkitAudioContext)(); var myAudio = document.querySelector('audio'); var pre = document.querySelector('pre'); var myScript = document.querySelector('script'); pre.innerHTML = myScript.innerHTML; // Создаем MediaElementAudioSourceNode // На основе HTMLMediaElement var source = audioCtx.createMediaElementSource(myAudio); // Создаем узел контроля громкости (усиления) var gainNode = audioCtx.createGain(); // Переменные, содержащие Y координату курсора мыши // и высоту окна var CurY; var HEIGHT = window.innerHeight; // Обновляем Y координату курсора при движении мышью // и вычисляем новый коэффициент усиления document.onmousemove = updatePage; function updatePage(e) { CurY = (window.Event) ? e.pageY : event.clientY + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); gainNode.gain.value = CurY/HEIGHT; } // Последний шаг - построение графа // Подсоединяем AudioBufferSourceNode к gainNode // а gainNode, в свою очередь, к конечному узлу вывода // Теперь мы можем слушать музыку управляя громкостью воспроизведения движением курсора мыши :) source.connect(gainNode); gainNode.connect(audioCtx.destination);
Примечание: Вызов createMediaElementSource()
перенаправит выходной поток аудиоданных из {{domxref("HTMLMediaElement")}} в обрабатывающий граф AudioContext. Управление воспроизведением медиа все ещё будет осуществляться через API медиа элемента или его панель управления.
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('Web Audio API', '#widl-AudioContext-createMediaElementSource-MediaElementAudioSourceNode-HTMLMediaElement-mediaElement', 'createMediaElementSource()')}} | {{Spec2('Web Audio API')}} |
Возможность | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Базовая поддержка | {{CompatChrome(10.0)}}{{property_prefix("webkit")}} | {{CompatGeckoDesktop(25.0)}} | {{CompatNo}} | 15.0{{property_prefix("webkit")}} 22 |
6.0{{property_prefix("webkit")}} |
Возможность | Android | Firefox Mobile (Gecko) | Firefox OS | IE Mobile | Opera Mobile | Safari Mobile | Chrome for Android |
---|---|---|---|---|---|---|---|
Базовая поддержка | {{CompatUnknown}} | 26.0 | 1.2 | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | 33.0 |