Я работаю над небольшой библиотекой под названием extendedable-media-Recorder , которая позволяет расширить собственный MediaRecorder с помощью пользовательских кодировщиков. Кодер для проверки концепции, который я создаю, является WAV-кодером. Надеюсь, что это работает и для вас.
Я еще не документировал библиотеку, поэтому я рад принять ваш вопрос как возможность собрать полный пример использования.
import { MediaRecorder, register } from 'extendable-media-recorder';
import { connect } from 'extendable-media-recorder-wav-encoder';
(async () => {
// Get the port a worker which can encode WAV files.
const port = await connect();
// Register this port with the MediaRecorder.
await register(port);
// Request a MediaStream with an audio track.
const mediaStream = await navigator.mediaDevices
.getUserMedia({ audio: true });
// Create a MediaRecorder instance with the newly obtained MediaStream.
const mediaRecorder = new MediaRecorder(mediaStream, {
mimeType: 'audio/wav'
});
// Kick off the recording.
mediaRecorder.start();
mediaRecorder.addEventListener('dataavailable', ({ data }) => {
// The data variable now holds a refrence to a Blob with the WAV file.
});
// Stop the recording after a second.
setTimeout(() => mediaRecorder.stop(), 1000);
})();
Я надеюсь, что комментарии объясняют, что делает код. Пожалуйста, дайте мне знать, если это не так.