WebCRT Audio(AudioContext) - 绘制音波图,超级好玩!

本文介绍了如何在开源项目pear-rec中实现录音功能,并展示美观的波形图。通过AudioContext解析音频数据,转换成Uint8Array数组,然后利用canvas或Echarts在页面上实时绘制波形,实现了音频的可视化。当点击播放和暂停按钮时,动态更新波形图,提供了一个交互式的用户体验。

背景

最近正在做一个开源的项目–pear-rec,pear-rec 是一个跨平台的截图、录屏、录音、录像软件。截图功能上篇文章已经讲过了,现在正在做录音功能。其实录音功能不难,但是我想做的美观,所以我想实现一个波形图。来展示正在录音。
在这里插入图片描述

工具

实现

原理逻辑

页面加载一段音频(audio),然后通过AudioContext对象解析音频的数据,然后转换成Uint8Array的数组,最后通过canvas实时画出数组的数据。就可以完成了!其实并不难,接下来我们就来实现吧!

在这里插入图片描述

准备工作

因为我们是简单实现一个demo,我选择了jqueryecharts来辅助我来开发,其实也可以不用。

<script src="https://fastly.jsdelivr.net/npm/jquery@3.7.0/dist/jquery.min.js"></script>
<script src="https://fastly.jsdelivr.net/npm/echarts@5/dist/echarts.min.js"></script>

静态页面

css 代码
             html,
                body {
   
   
                    margin: 0;
                    overflow: hidden;
                    font-family: sans-serif;
                    background: #13091B;
                    height: 100%;
                }

                body {
   
   
                    background: url(https://p1.music.126.net/gAmIGjlWnYXE_0O8LFp5-w==/109951164382001054.jpg) no-repeat;
                    background-size: cover;
                }

                #canvas {
   
   
                    position: fixed;
                    left: 0;
                    top: 0;
                    width: 100%;
                    height: 100%;
                }

                audio {
   
   
                    visibility: hidden;
                }

                #pause-btn,
                #play-btn {
   
   
                    position: absolute;
                    top: 50%;
                    left: 50%;
                    transform: translate(-50%, -50%);
                    color: #13091B;
                    background: #007A99;
                    display: block;
                    width: 150px;
                    height: 45px;
                    line-height: 45px;
                    font-size: 18px;
                    cursor: pointer;
                    border-radius: 4px;
                    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值