Я пытаюсь создать простой аудио-рекордер, который записывает и воспроизводит голос пользователя одновременно (синхронно), используя WebRTC и MediaRecorder. Итак, вот что я сделал до сих пор:
Полный HTML-код
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Audio Recorder</title>
<style>
audio{
display: block;
}
</style>
</head>
<body>
<audio id="audio" controls autoplay></audio>
<button type="button" onclick="mediaRecorder.start(1000)">Start</button>
<button type="button" onclick="mediaRecorder.stop()">Stop</button>
<script type="text/javascript">
var mediaRecorder = null,
chunks = [],
audio = document.getElementById('audio');
function onSuccess( stream ) {
mediaRecorder = new MediaRecorder( stream );
audio.srcObject = stream ;
mediaRecorder.ondataavailable = function( event ) {
chunks.push( event.data );
}
}
var onError = function(err) {
console.log('Error: ' + err);
}
navigator.mediaDevices.getUserMedia({ audio: true }).then(onSuccess, onError);
</script>
</body>
</html>
Проблема с этим кодом заключается в том, что он воспроизводит весь поток, и мне нужна только записанная часть (звук, записанный MediaRecorder).
Вопрос: Возможно ли это, или единственный вариант - остановить рекордер и затем получить записанную часть («куски» в коде)?
Примечание: Ответа да / нет будет более чем достаточно для меня. Спасибо.
Объяснение кода:
Когда вы запускаете код, ваш браузер запрашивает разрешение на доступ к вашему микрофону:
В случае, если вы нажмете «разрешить», вы услышите свой голос, даже если вы не нажали кнопку «Пуск», и это потому, что источником аудиоэлемента является весь поток.
Мне нужно только услышать записанную партию, при записи (нажав кнопку пуска), другими словами, преобразовать записанную партию в поток .
Что я ищу: