MediaRecorder не генерирует тип данных .wav. По умолчанию он, вероятно, генерирует данные типа MIME audio/webm; codecs=opus
. или audio/ogg; codec=vorbis
. Ваша лямбда-функция выглядит так, как будто она верно хранит входящие данные. Но это не данные .wav, это что-то другое.
Ваш пример кода позволяет MediaRecorder выбрать свой собственный тип MIME. В этом случае вы должны спросить его, что он использовал. Например,
rec = new MediaRecorder(stream);
console.log (rec.mimeType);
Или вы можете (попытаться) указать, какой тип MIME вам нужен. В этом случае вы все равно должны спросить его, что он на самом деле использовал. (Браузеры различаются по типам MIME, которые они генерируют, и по тому, как они реагируют, когда они не могут предоставить именно тот тип, который вы хотите.) Если ваш браузер может это сделать, этот код будет генерировать , вероятно, mp3 (он же MPEG Layer III) audio .
rec = new MediaRecorder(stream, {mimeType: "audio/mpeg"});
console.log (rec.mimeType);
Или, вы можете попробовать audio/mp4
MIME type и посмотреть, какой аудио кодек вы получите. Это может варьироваться от браузера к браузеру.
Обычно вы можете использовать ffmpeg для преобразования любого типа MIME в другой после того, как вы его записали. Это удобно, если требуется вывод .wav или какой-то другой конкретный формат. Требуется некоторый взлом, но вы можете сделать это в своей лямбда-функции .