У меня есть audioContext, который получает медиа из createMediaElementSource. Я хочу анализировать этот звук на ходу в AudioBuffers или что-то подобное, что я могу отправить другому клиенту через веб-сокеты.
let audioElement = document.querySelector('video')
let audioContext = new window.AudioContext()
let source = audioContext.createMediaElementSource(audioElement)
source.connect(deliverToOtherClientOrSomething)
Я попытался создать AudioWorkletNode, но проблема с этим подходом в том, что он не позволяет мне закончить цепочку на этом, но заставляет меня пересылать звук в какой-то другой элемент AudioContext, что нежелательно.
1 ответ
Итак, в конце концов, эта проблема была решена с помощью узла звукового рабочего листа. При создании AudioWorkletNode можно передавать ему параметры. Один из вариантов - numberOfOutputs. Таким образом, я получил полный ответ на мой вопрос.
Mainfile
const sendProcessor = new AudioWorkletNode(audioContext, 'send-processor', {numberOfOutputs:0})
sendProcessor.port.onmessage = (event) => {
callback(event.data);
}
Файл процессора
process(inputs, outputs) {
this.port.postMessage(inputs[0][0]);
return true;
}
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.