当前位置:首页 > JavaScript

js实现录音进度条回放

2026-04-05 02:47:39JavaScript

实现录音进度条回放

使用JavaScript实现录音进度条回放功能,可以通过MediaRecorder API进行录音,并结合<audio>元素和<progress>或自定义进度条控件实现回放功能。

js实现录音进度条回放

录音功能实现

通过navigator.mediaDevices.getUserMedia获取麦克风权限,创建MediaRecorder实例录制音频。

js实现录音进度条回放

let mediaRecorder;
let audioChunks = [];

async function startRecording() {
    const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
    mediaRecorder = new MediaRecorder(stream);

    mediaRecorder.ondataavailable = (event) => {
        audioChunks.push(event.data);
    };

    mediaRecorder.onstop = () => {
        const audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
        const audioUrl = URL.createObjectURL(audioBlob);
        const audioElement = document.getElementById('audioPlayer');
        audioElement.src = audioUrl;
    };

    mediaRecorder.start();
}

进度条同步

通过监听<audio>元素的timeupdate事件更新进度条。

const audioElement = document.getElementById('audioPlayer');
const progressBar = document.getElementById('progressBar');

audioElement.addEventListener('timeupdate', () => {
    const currentTime = audioElement.currentTime;
    const duration = audioElement.duration;
    const progressPercent = (currentTime / duration) * 100;
    progressBar.value = progressPercent;
});

自定义进度条交互

允许用户点击进度条跳转到指定时间点。

progressBar.addEventListener('click', (event) => {
    const rect = progressBar.getBoundingClientRect();
    const clickPosition = (event.clientX - rect.left) / rect.width;
    const seekTime = clickPosition * audioElement.duration;
    audioElement.currentTime = seekTime;
});

完整HTML结构

<button id="startButton">开始录音</button>
<button id="stopButton">停止录音</button>
<audio id="audioPlayer" controls></audio>
<progress id="progressBar" value="0" max="100"></progress>

<script>
    // 上述JavaScript代码
</script>

优化与扩展

  • 实时波形显示:使用AudioContextAnalyserNode绘制实时波形。
  • 分段回放:记录时间戳并允许跳转到特定段落。
  • 样式美化:使用CSS自定义进度条外观,例如添加颜色渐变或动画效果。

通过上述方法,可以实现基本的录音进度条回放功能,并根据需求进一步扩展。

标签: 进度条js
分享给朋友:

相关文章

js 实现vue模板

js 实现vue模板

实现 Vue 模板的 JavaScript 方法 通过原生 JavaScript 可以实现类似 Vue 的模板渲染功能,主要包括数据绑定、指令处理和模板解析。以下是核心实现思路: 数据绑定与…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

js实现授权

js实现授权

授权流程设计 授权流程通常涉及前端与后端的交互,常见方案包括OAuth2.0、JWT等。以JWT为例的典型流程: 用户提交凭证(如用户名密码)到认证服务 服务端验证通过后生成包含用户信息的JWT令牌…

js节流实现

js节流实现

节流的概念 节流(Throttle)是一种限制函数执行频率的技术,确保函数在一定时间间隔内只执行一次。常用于滚动事件、窗口调整等高频触发的场景。 基础实现方法 使用时间戳判断是否执行函数: fun…