AudioContext: метод createMediaStreamSource()
Базовый уровень Широко распространён
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2021 года.
Метод createMediaStreamSource() интерфейса AudioContext используется для создания нового объекта MediaStreamAudioSourceNode, используя медиапоток (например, из экземпляра MediaDevices.getUserMedia), звук из которого можно воспроизводить и обрабатывать.
Для получения более подробной информации о узлах аудиоисточника медиапотока, см. страницу справки MediaStreamAudioSourceNode.
Синтаксис
createMediaStreamSource(stream)
Параметры
stream-
MediaStreamдля использования в качестве источника звука, который будет подан на график обработки звука для использования и манипулирования.
Возвращаемое значение
Новый объект MediaStreamAudioSourceNode, представляющий узел звука, чья медиа получена из указанного источника потока.
Примеры
В этом примере мы получаем поток медиа (аудио + видео) из navigator.getUserMedia, подаём медиа в элемент <video> для воспроизведения, затем выключаем звук, но также подаём аудио в MediaStreamAudioSourceNode. Затем мы подаём этот источник аудио на низкочастотный BiquadFilterNode (который фактически служит усилителем басов) и на AudioDestinationNode.
Ползунок диапазона под элементом <video> управляет коэффициентом усиления низкочастотного фильтра — увеличьте значение ползунка, чтобы сделать звук более басовым!
Примечание: Вы можете посмотреть этот пример в действии или посмотреть исходный код.
const pre = document.querySelector("pre");
const video = document.querySelector("video");
const myScript = document.querySelector("script");
const range = document.querySelector("input");
// getUserMedia block - grab stream
// put it into a MediaStreamAudioSourceNode
// also output the visuals into a video element
if (navigator.mediaDevices) {
console.log("getUserMedia supported.");
navigator.mediaDevices
.getUserMedia({ audio: true, video: true })
.then((stream) => {
video.srcObject = stream;
video.onloadedmetadata = (e) => {
video.play();
video.muted = true;
};
// Create a MediaStreamAudioSourceNode
// Feed the HTMLMediaElement into it
const audioCtx = new AudioContext();
const source = audioCtx.createMediaStreamSource(stream);
// Create a biquad filter
const biquadFilter = audioCtx.createBiquadFilter();
biquadFilter.type = "lowshelf";
biquadFilter.frequency.value = 1000;
biquadFilter.gain.value = range.value;
// connect the AudioBufferSourceNode to the gainNode
// and the gainNode to the destination, so we can play the
// music and adjust the volume using the mouse cursor
source.connect(biquadFilter);
biquadFilter.connect(audioCtx.destination);
// Get new mouse pointer coordinates when mouse is moved
// then set new gain value
range.oninput = () => {
biquadFilter.gain.value = range.value;
};
})
.catch((err) => {
console.log(`The following gUM error occurred: ${err}`);
});
} else {
console.log("getUserMedia not supported on your browser!");
}
// dump script to pre element
pre.textContent = myScript.textContent;
Примечание: Вследствие вызова createMediaStreamSource(), воспроизведение звука из медиапотока будет перенаправлено в график обработки AudioContext. Поэтому воспроизведение/пауза потока всё ещё может выполняться через API элемента медиа и элементы управления воспроизведением.
Спецификации
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
createMediaStreamSource |
22 | 12 | 25 | 15 | 11 | 25 | 25 | 14 | 11 | 1.5 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createMediaStreamSource