相关疑难解决方法(0)

有没有办法使用Web Audio API比实时更快地采样音频?

我正在玩Web Audio API并尝试找到导入mp3的方法(所以这只在Chrome中),并在画布上生成它的波形.我可以实时做到这一点,但我的目标是比实时更快地做到这一点.

我能够找到的所有示例都涉及从onaudioprocess事件附带的函数中读取分析器对象的频率数据:

processor = context.createJavascriptNode(2048,1,1);
processor.onaudioprocess = processAudio;
...
function processAudio{
    var freqByteData = new Uint8Array(analyser.frequencyBinCount);
    analyser.getByteFrequencyData(freqByteData);
    //calculate magnitude & render to canvas
}
Run Code Online (Sandbox Code Playgroud)

但是看起来,analyser.frequencyBinCount只有在播放声音时才会填充(有关填充缓冲区的信息).

我想要的是能够尽可能快地手动/编程地逐步浏览文件,以生成画布图像.

到目前为止我得到的是:

$("#files").on('change',function(e){
    var FileList = e.target.files,
        Reader = new FileReader();

    var File = FileList[0];

    Reader.onload = (function(theFile){
        return function(e){
            context.decodeAudioData(e.target.result,function(buffer){
                source.buffer = buffer;
                source.connect(analyser);
                analyser.connect(jsNode);

                var freqData = new Uint8Array(buffer.getChannelData(0));

                console.dir(analyser);
                console.dir(jsNode);

                jsNode.connect(context.destination);
                //source.noteOn(0);
            });
        };
    })(File);

    Reader.readAsArrayBuffer(File);
});
Run Code Online (Sandbox Code Playgroud)

但是getChannelData()总是返回一个空的类型数组.

任何见解都会受到赞赏 - 即使事实证明它无法完成.我想我是唯一一个互联网想要做的东西,在实时.

谢谢.

javascript html5 webkit web-audio-api

17
推荐指数
2
解决办法
7123
查看次数

从AudioContext(Web Audio API)录制声音

有没有办法记录发送到的音频数据webkitAudioContext.destination

节点正在那里发送的数据正由浏览器播放,因此应该有一些方法将该数据存储到(.wav)文件中.

audio-recording html5-audio webkitaudiocontext web-audio-api

6
推荐指数
1
解决办法
8606
查看次数