Запись аудио через js неверный формат
Всем привет. Я разрабатываю клиентскую часть сервиса, одной из функций которого является запись аудио через js. Записанный аудиофайл на сервере не читается средствами языка (python) и не конвертируется. Аудио записываю с помощью mediaRecorder.
Мой код:
const start_btn = document.querySelector('#audio-record-btn');
const send_btn = document.querySelector('#audio-send-btn');
if (navigator.mediaDevices.getUserMedia) {
const constraints = { audio: true };
let chunks = [];
let onSuccess = function (stream) {
const mediaRecorder = new MediaRecorder(stream);
let blob = new Blob;
const audio = document.createElement('audio');
function start_foo() {
if (mediaRecorder.state === "inactive") {
mediaRecorder.start();
}
else if (mediaRecorder.state === "recording") {
mediaRecorder.stop();
console.log("Запись остановлена");
}
}
function send_foo() {
let form_data = new FormData();
const file = new File([blob], 'myfile.wav', { type: 'application/wav' });
form_data.append('audio', file);
sendAudio(form_data);
}
mediaRecorder.onstop = function (e) {
blob = new Blob(chunks, { type: 'audio/wav' });
chunks = [];
const audioURL = window.URL.createObjectURL(blob);
audio.src = audioURL;
audio.autoplay = true;
}
async function sendAudio(fd) {
await fetch(url, {
method: 'POST',
body: fd
})
console.log("ok");
}
start_btn.addEventListener('click', start_foo);
send_btn.addEventListener('click', send_foo);
mediaRecorder.ondataavailable = function (e) {
chunks.push(e.data);
}
}
let onError = function (err) {
console.log('The following error occured: ' + err);
}
navigator.mediaDevices.getUserMedia(constraints).then(onSuccess, onError);
} else {
console.log('getUserMedia not supported on your browser!');
}
На сервере возникают проблемы с форматом: он не читается и никак не признается, что это wav. Аудио можно воспроизвести средствами windows, никаких проблем нет. Пробовала выставлять mimeType для mediaRecorder:
const options = {
mimeType: "audio/wav",
}
const mediaRecorder = new MediaRecorder(stream, options);
Но это не помогло. При некоторых mimeType все вылетает напрочь из-за того, что они не поддерживаются браузером. А те, которые поддерживаются, все так же не воспринимаются python.
Я прогоняла файлы через сервис по определению типа, и практически всегда (вне зависимости от формата: wav, mp3, mka, webm) по содержимому файлы относились к формату mka на 47% (хотя я не особо доверяю этому)
При попытке конвертировать на сервере, возникала следующая ошибка:

Во всех примерах в интернете как правило никакие дополнительные настройки в виде mimeType или codecs не выставляются. Есть ли какие то решения данной проблемы с форматом аудио? (кроме написания конвертера ручками через base64) Или может есть какие то иные способы записи аудио с помощью JS?
Заранее спасибо за ответы