Javascript 使用ajax加载wav文件

Javascript 使用ajax加载wav文件,javascript,php,jquery,ajax,audio,Javascript,Php,Jquery,Ajax,Audio,我有一个音频文件列表。我想要完成的是,每当我点击列表中的文件时,javascript都会加载该音频文件的波形 这是一个绘制波形的函数: function drawBuffer( width, height, context, data ) { var step = Math.ceil( data.length / width ); var amp = height / 2; context.fillStyle = "silver"; context.clearRe

我有一个音频文件列表。我想要完成的是,每当我点击列表中的文件时,javascript都会加载该音频文件的波形

这是一个绘制波形的函数:

function drawBuffer( width, height, context, data ) {
    var step = Math.ceil( data.length / width );
    var amp = height / 2;
    context.fillStyle = "silver";
    context.clearRect(0,0,width,height);
    for(var i=0; i < width; i++){
        var min = 1.0;
        var max = -1.0;
        for (j=0; j<step; j++) {
            var datum = data[(i*step)+j]; 
            if (datum < min)
                min = datum;
            if (datum > max)
                max = datum;
        }
        context.fillRect(i,(1+min)*amp,1,Math.max(1,(max-min)*amp));
    }
}
function loadAudioClip(data) {
        var canvas = document.getElementById( "wavedisplay" );
        drawBuffer( canvas.width, canvas.height, canvas.getContext('2d'), data );
}
最后,功能
加载音频剪辑(数据)
应改变波形:

function drawBuffer( width, height, context, data ) {
    var step = Math.ceil( data.length / width );
    var amp = height / 2;
    context.fillStyle = "silver";
    context.clearRect(0,0,width,height);
    for(var i=0; i < width; i++){
        var min = 1.0;
        var max = -1.0;
        for (j=0; j<step; j++) {
            var datum = data[(i*step)+j]; 
            if (datum < min)
                min = datum;
            if (datum > max)
                max = datum;
        }
        context.fillRect(i,(1+min)*amp,1,Math.max(1,(max-min)*amp));
    }
}
function loadAudioClip(data) {
        var canvas = document.getElementById( "wavedisplay" );
        drawBuffer( canvas.width, canvas.height, canvas.getContext('2d'), data );
}

我的get_audio.php应该是什么样子。我应该如何获取数据。这些文件位于名为audio/

HTML5的文件夹中,并包含一个API,用于以更简单的形式执行这些操作

我建议您使用所需的所有功能查看wavesurfer.js插件的文档

Github上的Wavesurfer:


我希望这会有所帮助。

HTML5并包含一个API,以更简单的形式执行这些操作

我建议您使用所需的所有功能查看wavesurfer.js插件的文档

Github上的Wavesurfer:


我希望这会有所帮助。

为什么首先需要使用ajax下载整个文件?你在试图解决传统音频方法无法解决的问题吗?@charlietfl传统方法是什么?我正在尝试从服务器获取一个文件,这样我就可以使用drawBuffer函数显示波形。我应该如何做得更好呢?在HTML5中,有一些新的音频API函数将非常有用,尤其是分解波形。看看为什么首先需要用ajax下载整个文件?你在试图解决传统音频方法无法解决的问题吗?@charlietfl传统方法是什么?我正在尝试从服务器获取一个文件,这样我就可以使用drawBuffer函数显示波形。我应该如何做得更好呢?在HTML5中,有一些新的音频API函数将非常有用,尤其是分解波形。看见