قمت بتعديل الشيفرة، حيث أن المشكلة في مجال الوصول للمتيغرات، و عدم تطبيق دالة stop لتفعيل حدث stop للبدء بإجراءات حفظ الملف
<html>
<body>
<button onclick="samah();">تسجيل صوتي</button>
<button onclick="stops();">stop</button>
<a id="a"></a>
<script>
var audioChunks = []; // بيانات الصوت
var mediaRecorder = null;
var audioBlob = null;
var audioUrl = null;
function samah() {
navigator.mediaDevices.getUserMedia({audio: true})
.then(stream => {
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start(); // بدء التسجيل
mediaRecorder.addEventListener("dataavailable", event => {
audioChunks.push(event.data);
});
});
}
function stops() {
mediaRecorder.addEventListener("stop", () => {
audioBlob = new Blob(audioChunks, {type: mediaRecorder.mimeType});
audioUrl = URL.createObjectURL(audioBlob);
// تحميل ملف الصوت
let a = document.getElementById("a");
a.href = audioUrl;
a.download = "recording.webm";
a.innerText = 'click me to save file';
//document.body.appendChild(a);
//a.click();
});
mediaRecorder.stop();
}
</script>
</body>
</html>
وهو يعمل بشكل جيد كما المطلوب