Я пытаюсь отправить необработанную аудиоинформацию через socketio на мой сервер, но я не могу понять, как сделать последнее прошлое:
- Получите необработанные аудиоданные и просто отправьте их.
Чтобы получить данные, я просто использую обратный вызов ondataavailable
и собираю все в массив chunks
, например:
mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.ondataavailable = blobEvent => {
chunks.push(blobEvent.data);
};
Существует также интервал набор, который регулярно собирает chunks
и пытается отправить его на сервер.
Так вот, вот где я застрял. Я использую FileReader
для чтения BLOB-объекта как ByteArray
. Однако оттуда я не знаю, что на самом деле buffer
1018 * составляет и как его потреблять.
Просто отправка buffer
и запись в tmp.webm
не дали ожидаемые результаты.
sttInterval = setInterval(() => {
console.log('Sending event "record"');
const dataBlob = chunks.splice(0, chunks.length);
const blob = new Blob(dataBlob, { 'type' : 'audio/webm;codecs=opus' });
console.log(blob);
const fileReader = new FileReader();
fileReader.onload = function() {
const buffer = this.result;
sttSocket.emit('record', buffer);
recorderStop(buttonElement); // <-- FIXME Remove when done
};
fileReader.readAsArrayBuffer(blob);
}, intervalTimeout);