Alj*_*anc 8 audio html5-audio web-audio-api
我一直在检查Web Audio API文档和教程,但还没有想到如何解决这个问题.
假设我通过XMLHttpRequest加载了几个wav文件,然后创建了buffersources.我知道我可以安排精确播放的时间.但是,如果我不想播放它们,而是想要将它们存储在缓冲区中,那该怎么办呢?
一个真实的例子:我想创建一个简单的音序器,你可以在其中安排鼓,然后将整个混音导出到wav(不使用RecorderJS或其他东西录制).任何想法,图书馆?
只是做了这样的事情。
本质上,您需要创建一个脱机上下文:
var offline = new webkitOfflineAudioContext(numChannels, lengthInSamples, sampleRate)
Run Code Online (Sandbox Code Playgroud)
您必须使用以下新上下文重新创建所有BufferSource:
var newBufferSource = offline.createBufferSource();
newBufferSource.buffer = someAudioBuffer;
newBufferSource.connect(offline.destination);
Run Code Online (Sandbox Code Playgroud)
然后安排播放时间:
newBufferSource.start(offline.currentTime + 10);
Run Code Online (Sandbox Code Playgroud)
然后绑定到complete事件以进行离线渲染:
offline.onComplete = function( ev ){
doSomething(ev.renderedBuffer);
}
Run Code Online (Sandbox Code Playgroud)
然后开始“渲染”:
offline.startRendering();
Run Code Online (Sandbox Code Playgroud)
一旦有了ev.renderedBuffer,您就可以随心所欲地做它。在我的应用程序中,我有一个WAV编码器,最终我自己写了-但您可以修改Recorder.js使其很容易地完成相同的操作。
请注意:webkitOfflineAudioContext目前仅支持Chrome。如果您对此感兴趣,请点击以下链接:OfflineAudioContext