You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Recorder.js录音时点击暂停按钮无法停止音频计时的问题

录音机计时暂停失效解决方法

问题原因

当前仅在录音启动时创建了每秒更新计时的定时器,未在触发暂停操作时清除该定时器,因此计时逻辑会持续运行。

修复步骤

  • 第一步:将定时器ID设置为全局可访问
    你当前将intervalId定义在getUserMedia的回调作用域内,暂停、停止按钮的事件回调无法访问该变量,需要将其提到上层公共作用域:
// 在JS代码最顶层定义公共变量
let intervalId;
const statusText = document.getElementById('status-text');
const pauseButton = document.getElementById('pauseButton');
const stopButton = document.getElementById('stopButton');
  • 第二步:在暂停按钮的点击事件中清除定时器
    在原有暂停录音的逻辑后,新增清除定时器的代码:
pauseButton.addEventListener('click', function() {
  // 原有Recorder.js暂停录音的逻辑保留,无需修改
  clearInterval(intervalId); // 新增:停止计时更新
})
  • 第三步:补充恢复录音、停止录音的计时适配
    1. 暂停后恢复录音时,重新启动定时器即可继续计时
    2. 点击停止按钮结束录音时,清除定时器同时重置计时显示:
stopButton.addEventListener('click', function() {
  // 原有停止录音、保存音频的逻辑保留
  clearInterval(intervalId);
  statusText.innerText = ''; // 清空计时
})

可选优化

如果直接使用audioContext.currentTime获取录音时长,暂停时调用audioContext.suspend(),恢复时调用audioContext.resume(),上下文时间会自动暂停计数,无需额外计算时长差值,逻辑更简洁。

内容的提问来源于stack exchange,提问作者Owaiz Yusufi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 19:06:07