当前位置:首页 > 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实现

js实现

JavaScript 实现方法 JavaScript 是一种广泛使用的编程语言,适用于网页开发、服务器端编程以及移动应用开发。以下是几种常见的 JavaScript 实现方法: 网页交互功能 使用…

js实现图片放大缩小

js实现图片放大缩小

实现图片放大缩小的基础方法 使用CSS的transform: scale()属性可以快速实现图片的放大缩小效果。通过JavaScript动态修改该属性值: const img = document.…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现dh

js实现dh

JavaScript 实现 DH(Diffie-Hellman)密钥交换 Diffie-Hellman(DH)密钥交换是一种安全协议,允许双方在不安全的通信信道上建立一个共享密钥。以下是如何在 Jav…

js实现求导

js实现求导

实现数值求导的方法 在JavaScript中实现求导通常采用数值方法,因为JavaScript不是符号计算语言。以下是常见的数值微分方法: 中心差分法 中心差分法提供较高精度的导数近似: func…