Я пытаюсь передавать аудио через Websocket.
Я могу получить AudioBuffer с микрофона (или другого источника) через Web-Audio-Api и транслировать RAW-Audio-Buffer, но я думаю, что это не будет очень эффективным. Поэтому я посмотрел вокруг, чтобы как-то кодировать AudioBuffer. - Если опус-код c был бы невозможен, я открыт для альтернатив и благодарен за любые подсказки в правильном направлении.
Я попытался использовать MediaRecorder (из MediaStreamRecording-API), но это кажется, что невозможно потоковая передача с этим API вместо простой записи.
Вот часть, как я получаю RAW-AudioBuffer:
const handleSuccess = function(stream) {
const context = new AudioContext();
const source = context.createMediaStreamSource(stream);
const processor = context.createScriptProcessor(16384, 1, 1);
source.connect(processor);
processor.connect(context.destination);
processor.onaudioprocess = function(e) {
bufferLen = e.inputBuffer.length
const inputBuffer = new Float32Array(bufferLen);
e.inputBuffer.copyFromChannel(inputBuffer, 0);
let data_to_send = inputBuffer
//And send the Float32Array ...
}
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(handleSuccess);
Итак, главный вопрос: как я могу кодировать AudioBuffer. (и расшифруйте его в приемнике) Есть ли API или библиотека? Могу ли я получить закодированный буфер из другого API в браузере?