1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 傅里叶变换音频可视化_HTML5如何实现音频可视化频谱跳动

傅里叶变换音频可视化_HTML5如何实现音频可视化频谱跳动

时间:2019-04-10 22:12:48

相关推荐

傅里叶变换音频可视化_HTML5如何实现音频可视化频谱跳动

本篇教程探讨了HTML5如何实现音频可视化频谱跳动,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 。

<

html>

HTML5音频可视化频谱跳动代码

*{

margin:0;

padding:0;

}

#canvas{

display:block;

background:linear-gradient(135deg,rgb(142,13,133)0%,rgb(230,132,110)100%);

}

window.onload=function(){

varoAudio=document.getElementById(‘myaudio‘);

window.οnclick=function(){

if(oAudio.paused){

oAudio.play();

}else{

oAudio.pause();

}

}

//创建音频上下文对象

varoCtx=newAudioContext();

//console.log(oCtx);

//创建媒体源,除了audio本身可以获取,也可以通过oCtx对象提供的api进行媒体源操作

varaudioSrc=oCtx.createMediaElementSource(oAudio);

//创建分析机

varanalyser=oCtx.createAnalyser();

//媒体源与分析机连接

audioSrc.connect(analyser);

//输出的目标:将分析机分析出来的处理结果与目标点(耳机/扬声器)连接

analyser.connect(oCtx.destination);

//效果(实现的具体方法)

//绘制音频图的条数(fftSize)

/*

根据分析音频的数据去获取音频频次界定音频图的高度

放在与音频频次等长的8位无符号字节数组

Uint8Array:初始化默认值为1024

*/

//利用cancas渐变进行音频绘制

varctx=canvas.getContext(‘2d‘);

canvas.width=window.innerWidth;

canvas.height=window.innerHeight;

varoW=canvas.width;

varoH=canvas.height;

varcolor=ctx.createLinearGradient(oW/2,oH*2/3-30,oW/2,oH*2/3-100);

color.addColorStop(0,‘#000‘);

color.addColorStop(.5,‘#069‘);

color.addColorStop(1,‘#f6f‘);

//音频图的条数

varcount=150;

//缓冲区:进行数据的缓冲处理,转换成二进制数据

varvoiceHeight=newUint8Array(analyser.frequencyBinCount);

//console.log(voiceHeight);

functiondraw(){

//将当前的频率数据复制到传入的无符号字节数组中,做到实时连接

analyser.getByteFrequencyData(voiceHeight);

//console.log(voiceHeight);

//自定义获取数组里边数据的频步

varstep=Math.round(voiceHeight.length/count);

ctx.clearRect(0,0,oW,oH);

for(vari=0;i

varaudioHeight=voiceHeight[step*i];

ctx.fillStyle=color;

ctx.fillRect(oW/2+(i*10),oH*2/3,7,-audioHeight);

ctx.fillRect(oW/2-(i*10),oH*2/3,7,-audioHeight);

}

window.requestAnimationFrame(draw);

}

draw();

/*

analyserNode提供了时时频率以及时间域的分析信息

允许你获取实时的数据,并进行音频可视化

analyserNode接口的fftSize属性

fftSize:无符号长整型值,用于确定频域的FFT(快速傅里叶变换)

ffiSize属性值是从32位到32768范围内的2的非零幂,默认值是2048

*/

}

本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标WEB前端HTML5/CSS3频道!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。