Я использую 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, пожалуйста, помогите?