js实现音频可视化波形图

效果如图:线条的颜色粗细也可以自己调整。

代码如下(可直接复制使用):

<html lang="en"><head><meta charset="UTF-8"><title>可视化音频</title><script src="https://code.jquery.com/jquery-3.3.1.min.js"></script><style>body {display: block;background-position: center;background-repeat: no-repeat;background-attachment: fixed;background-size:100%;}</style></head><body><input type="file" style="color:red;" name="" value="" id="musicFile"><input type="button" name="startStop" value="暂停" id="startStop"><p id="tip" style="color:red;"></p><canvas id="canvas"></canvas><script>window.onload = function () {canvas.width = window.innerWidth;canvas.height = window.innerHeight;var canvasCtx = canvas.getContext("2d");var AudioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext;var audioContext = new AudioContext();//实例化$('#musicFile').change(function(){//当选择歌曲时,判断当前audioContext的状态,如果在进行中则关闭音频环境,//释放audioContext的所有资源,并重新实例化audioContextif(audioContext.state == 'running'){audioContext.close();audioContext = new AudioContext();}if (this.files.length == 0) return;var file = $('#musicFile')[0].files[0];var fileReader = new FileReader();fileReader.readAsArrayBuffer(file);fileReader.onload = function(e) {var count = 0;$('#tip').text('开始解码')var timer = setInterval(function(){count++;$('#tip').text('解码中,已用时'+count+'秒')},1000)audioContext.decodeAudioData(e.target.result, function(buffer) {clearInterval(timer)$('#tip').text('解码成功,用时共计:'+count+'秒')var audioBufferSourceNode = audioContext.createBufferSource();var analyser = audioContext.createAnalyser();analyser.fftSize = 256;audioBufferSourceNode.connect(analyser);analyser.connect(audioContext.destination);audioBufferSourceNode.buffer = buffer;audioBufferSourceNode.start();var bufferLength = analyser.frequencyBinCount;var dataArray = new Uint8Array(bufferLength);//播放暂停音频startStop.onclick = function() {if(audioContext.state === 'running') {audioContext.suspend().then(function() {$("#startStop").val('播放');});} else if(audioContext.state === 'suspended') {audioContext.resume().then(function() {$("#startStop").val('暂停');});  }}var oW = canvas.width;var oH = canvas.height;var color1 = canvasCtx.createLinearGradient(oW / 2, oH / 2-10, oW / 2, oH / 2 - 150);var color2 = canvasCtx.createLinearGradient(oW / 2, oH / 2+10, oW / 2, oH / 2 + 150);color1.addColorStop(0, '#1E90FF');color1.addColorStop(.25, '#FF7F50');color1.addColorStop(.5, '#8A2BE2');color1.addColorStop(.75, '#4169E1');color1.addColorStop(1, '#00FFFF');color2.addColorStop(0, '#1E90FF');color2.addColorStop(.25, '#FFD700');color2.addColorStop(.5, '#8A2BE2');color2.addColorStop(.75, '#4169E1');color2.addColorStop(1, '#FF0000');function draw() {drawVisual = requestAnimationFrame(draw);var barHeight;// 自定义获取数组里边数据的频步canvasCtx.clearRect(0, 0, oW, oH);for (var i = 0; i < bufferLength; i++) {barHeight = dataArray[i];analyser.getByteFrequencyData(dataArray);// 绘制向上的线条canvasCtx.fillStyle = color1;  /* context.fillRect(x,y,width,height)* x,y是坐标* width,height线条的宽高*/canvasCtx.fillRect(oW / 2 + (i * 8), oH / 2, 2, -barHeight);canvasCtx.fillRect(oW / 2 - (i * 8), oH / 2, 2, -barHeight);// 绘制向下的线条canvasCtx.fillStyle = color2;  canvasCtx.fillRect(oW / 2 + (i * 8), oH / 2, 2, barHeight);canvasCtx.fillRect(oW / 2 - (i * 8), oH / 2, 2, barHeight);}};draw();})}})}</script></body>
</html>

js实现音频可视化波形图相关推荐

  1. html5音频文件生成波形图代码,使用wavesurfer.js显示mp3 audio音频的波形图

    by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=8290 本文可全文转载,个人网站无需授权,只要保留原作者.出处以及文中链接即可, ...

  2. vue+elementUI使用Wavesurfer.js音频可视化

    vue+elementUI使用Wavesurfer.js音频可视化 效果图 安装 wavesurfer.js npm install wavesurfer.js --save (datav安装) np ...

  3. html语音播放动画,html5 canvas+js音频可视化动画特效

    html5 canvas+js实现的音频可视化动画特效,选择一首本地音频文件播放查看效果. 查看演示 下载资源: 13 次 下载资源 下载积分: 20 积分 js代码 window.onload = ...

  4. canvas音频可视化js插件

    下载地址 一个现代的.圆形的纯JavaScript编写的音频可视化工具,它提供了基于频率和节拍的可视化网页特效. dd:

  5. java web 播放音频_用webAudio和canvas实现音频可视化

    前两天遇到了要显示音频波形图的需求,因为时间紧,就直接用了wavesufer.js,这两天有空,就研究了一下怎么用webAudio实现音频的可视化. 大致流程是对音源进行解析,解析得到的数据是个频谱数 ...

  6. vue组件可视化_Vue HTML5音频可视化组件

    vue组件可视化 视听 (vue-audio-visual) VueJS audio visualization components. VueJS音频可视化组件. Vue HTML5 audio v ...

  7. 傅里叶变换音频可视化_Web Audio在音频可视化中的应用

    Web Audio在音频可视化中的应用 本文有两个关键词:音频可视化和Web Audio.前者是实践,后者是其背后的技术支持. Web Audio 是很大的知识点,本文会将重点放在如何获取音频数据这块 ...

  8. 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图

    这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...

  9. java h5在线音频_H5 录音音频可视化

    这段时间给 GitHub Recorder 开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码, ...

最新文章

  1. Log4net 使用说明
  2. “最害怕过周末”、“希望每天都干活”、“水电费又白交了”
  3. 信号与系统奥本海姆pdf_2019上海交通大学819信号系统与信号处理考研初/复试经验...
  4. different behavior dialog popup display no
  5. 解决: service endpoint with name xxx already exists
  6. C语言学习及项目开发所遇问题总集(一)---Mr.Zhang
  7. 前端注释那些事儿:看懂这篇,提高代码质量So easy
  8. 多多农场游戏源码果园种植+养殖游戏 对接广告联盟APP+小程序
  9. 智慧城管核心应用系统建设
  10. 消费者行为分析包含了哪些内容?
  11. 富文本 和 图片裁切
  12. 超级简单的私有云笔记+私有云网盘
  13. 2022广东最新八大员之(安全员)模拟试题题库及答案
  14. ..\Watch\alarm.c(149): error: #268: declaration may not appear after executable statement in block
  15. 客制化键盘编程_客制化键盘QMK固件入门-修改keyboard和keymap
  16. 二维码编码库qrencode
  17. C++第2次实验作业
  18. 景深概念以及景深的计算公式
  19. C++ 牛客网做题总结
  20. 一个数的亲和数iiic++_世界上最大的数和最小的数是多少?

热门文章

  1. 人生理解---3、不想学习的时候怎么办
  2. 解决浏览器下载文件时中文文件名乱码的问题
  3. xampp mysql 端口被占用_如何解决XAMPP安装后提示80端口被占用
  4. 《Python 深度学习》刷书笔记 Chapter 3 预测房价:回归问题
  5. BZOJ 1778 Usaco2010 驱逐猪猡
  6. Tomcat部署及安装
  7. 14 Python 办公自动化
  8. 如何从outlook ost恢复数据(ost导入outlook)
  9. MATLAB函数合辑
  10. 过去两三年 互联网科技公司的掌舵人这样看区块链