改变音频速度并保存为新文件

3
有没有办法通过javascript编程来改变音频文件的播放速度并将其保存为新文件呢?
我能想到的唯一解决方案是通过Web Audio API节点传输音频文件,改变播放速率,并将输出记录为wav文件。但这不是理想的解决方案,因为我必须播放整个文件才能记录新版本。
1个回答

3
您可以使用离线音频环境(Web Audio API)来处理音频。这样可以在无需等待实时播放的情况下对音频进行处理。
//will hold the sped up audio
var spedUpBuffer;

//Create the context 
var offlineCtx = new OfflineAudioContext(2,44100*40,44100);//(channels,length,Sample rate);

//create source node and load buffer
var source = offlineCtx.createBufferSource();
source.buffer = yourBuffer;

//speed the playback up
source.playbackRate.value = 1.25;

//lines the audio for rendering
source.start(0);

//renders everything you lined up
offlineCtx.startRendering();
offlineCtx.oncomplete = function(e) {
//copies the rendered buffer into your variable.
spedUpBuffer = e.renderedBuffer;
}

你知道如何使音高正常吗?当我们改变AudioBufferSourceNode.playbackRate时,音频的音高没有被修正。 - Jun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接