获取权限
function getUserAuthI(){
return new Promise((resolve,reject) => {
if(navigator.mediaDevices.getUserMedia){
const options = { audio:true };
navigator.mediaDevices.getUserMedia(options)
.then(
stream => {
resovle({ statue:true,stream });
},
() => {
reject({ status:false, stream:null });
console.error("授权失败");
}
)
} else {
reject({ status:false, stream:null });
console.error("浏览器不支持,无法获取麦克风");
}
})
}
监听事件
const mediaRecorder = new MediaRecoder(stream);
bindEvents(mediaRecorder);
let chunks = [];
function bindEvents(target){
target.addEventListener("dataavailable",(e) => {
chunks.push(e.data);
});
target.addEventListener("stop",(e) => {
const blob = new Blob(chunks,{ type:"audio/ogg; codecs=opus" });
chunks = [];
const audioURL = window.URL.createObjectURL(blob);
const fileName = Date.now().toString(32);
const fileType = "audio/ogg";
const file = new window.File([blob],fileName,{ type:fileType });
const a = document.createElement("a");
a.href = audioURL;
a.download = fileName;
a.click();
})
}