Как конвертировать аудио буфер в MP3 в Javascript? - PullRequest
0 голосов
/ 17 апреля 2020

Я использую MediaRecorder в ReactJS для записи звука с микрофона и сохранения в BLOB-формате с MIME-типом «audio / mp3». Я хочу конвертировать этот BLOB-объект в MP3 и загрузить его в корзину S3.

Я могу преобразовать его в WAV с помощью функций audioContext, decodeAudioData и audioBufferToWav, но размер WAV очень велик. Поскольку размер файла MP3 относительно невелик, я хочу, чтобы он конвертировал мой блоб в формат MP3. Любая помощь?

Мой код для записи и преобразования в WAV:

getUserMedia({ audio: true })
      .then(stream => {
        this.stream = stream;
        const mimeType = 'audio/mp3';
        this.mediaRecorder = new MediaRecorder(stream);
        this.mediaRecorder.start();
        const audioChunks = [];
        this.mediaRecorder.addEventListener('dataavailable', event => {
          audioChunks.push(event.data);
        });

        this.mediaRecorder.addEventListener('stop', () => {
          const audioBlob = new Blob(audioChunks, {
            type: mimeType});

        });
      }).catch(error => { });

Преобразование выше созданного BLOB-объекта в WAV:

const reader = new window.FileReader();
    reader.readAsDataURL(audioBlob);
    reader.onloadend = () => {
      let base64 = reader.result + '';
      base64 = base64.split(',')[1];
      const ab = new ArrayBuffer(base64.length);
      const buff = new Buffer.from(base64, 'base64');
      const view = new Uint8Array(ab);
      for (let i = 0; i < buff.length; ++i) {
        view[i] = buff[i];
      }
      const context = new AudioContext();
      context.decodeAudioData(ab, (buffer) => {
      const wavFile = toWav(buffer);
}

Я храню wavFile в S3. Я хочу MP3, пожалуйста, помогите?

...