我正在开发一个录音机项目 - 捕获语音笔记之类的东西。到目前为止,它可以工作并录制音频,然后附加到页面上的音频标签以立即播放
但是,此功能似乎仅在手机解锁时才适用于移动设备(Android/Chrome)。有时我喜欢在外出散步时或在其他无法解锁手机的情况下录制音频笔记。鉴于用户已经同意麦克风权限并开始录音,有什么办法可以在手机锁定的情况下继续录音?如果不是的话,这似乎是一个奇怪的限制......
这是我用来捕获录音的:
const chunks = [];
let recorder = null;
async function beginCapture(){
let audioStream;
try {
audioStream = await navigator.mediaDevices.getUserMedia({ audio: true });
} catch {
alert("Permission denied!");
return;
}
recorder = new MediaRecorder(audioStream);
recorder.ondataavailable = (e) => chunks.push(e.data);
recorder.onstop = () => saveRecordedAudio(new Blob(chunks));
recorder.start();
}
function saveRecordedAudio(blob){
//todo: actually save - we'll just output for now
const url = URL.createObjectURL(blob);
const audio = new Audio(url);
audio.controls = true;
document.body.appendChild(audio);
audio.onload = () => URL.revokeObjectURL(url);
}
//called on button press
function stopRecording(){
recorder.stop();
}
不可以,当您的手机锁定时,无法在网站上使用 JavaScript 捕获音频。出于安全和隐私原因,当设备锁定时,浏览器通常会限制对麦克风等设备功能的访问。您必须为此创建一个移动应用程序(例如使用 React Native)。