服务端:Node+Express+ejs前端
前端界面:HTML+CSS(CSS3)+JSweb
音频操做:webAudioexpress
音频数据可视化:Canvasnpm
全局安装express:npm install -g express-generator异步
使用ejs模板引擎,新建项目music:express --view=ejs music工具
进入项目目录安装依赖:cd music && npm installoop
安装项目变更实时监控工具:npm install -g supervisorspa
启动服务并检查项目是否成功建立:supervisor bin/www && 观测默认3000端口127.0.0.1:3000code
AudioContext对象:可理解为audio上下文对象,包含AudioNode对象以及它们的联系的对象,通常状况下,一个document中只有一个AudioContext对象,主要用到其两个属性四个方法:对象
destination属性:AudioDestinationNode对象,全部音频输出汇集地,至关于音频的硬件,全部AudioNode都直接或间接链接到这里
currentTime属性:AudioContext从建立开始到当前的时间(秒)
decodeAudioData(arrayBuffer,succ(buffer),err)方法:异步解码包含在arrayBuffer中音频数据
createBufferSource()方法:建立AudioBufferSourceNode对象
createAnalyser()方法:建立AnalyserNode对象
createGain()/createGainNode()方法:建立GainNode对象
AudioBufferSourceNode对象,表示内存中的一段音频资源,其音频数据存储在AudioBuffer的buffer属性中,其有三个属性:
buffer属性,AudioBuffer对象,表示要播放的音频资源数据,子属性:duration,表示该音频资源的时长
loop属性,是否循环播放,默认为false
onenload属性,绑定音频播放完毕调用的事件处理程序
start/noteOn(when=ac.currentTime,offset=0;duration=buffer.duration-offset),开始播放音频
stop/noteOff(when=ac.currentTime),结束播放音频
GainNode改变音频音量的对象,会改变经过它的音频数据全部的sample frame的信号强度,其属性:
gain,是AudioParam对象,经过改变其value值,能够改变音频信号的信号强弱,最小值为0,最大值为1,默认为1
AnalyserNode音频分析对象,能实时的分析音频资源的时域和频域信息,但不对音频流作任何处理,属性:
fftSize:设置FFT值的大小,用于分析获得频域,为32-2048之间2的整数次倍,默认为2048,实时获得的音频数据域的个数为fftSize的一半
frequencyBinCount:实时获得的音频频域域的数据个数,为FFT值的一半
getByteFrequencyData(Uint8Array)复制音频当前的频域数据到Uint8Array中