Отправка необработанных аудиоданных через socket.io с помощью MediaRecorder - PullRequest
0 голосов
/ 24 апреля 2020

Я пытаюсь отправить необработанную аудиоинформацию через 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);
...