如何使用Web音频API反向播放音频?

lak*_*nen 11 javascript html5 google-chrome web-audio-api

如何使用Web音频API反向播放音频?我似乎无法在API文档中找到任何内容......

Kev*_*nis 15

你可以这样做:

var context = new AudioContext(),
    request = new XMLHttpRequest();
request.open('GET', 'path/to/audio.mp3', true);
request.responseType = 'arraybuffer';
request.addEventListener('load', function(){
    context.decodeAudioData(request.response, function(buffer){
        var source = context.createBufferSource();
        Array.prototype.reverse.call( buffer.getChannelData(0) );
        Array.prototype.reverse.call( buffer.getChannelData(1) );
        source.buffer = buffer;
    });
});
Run Code Online (Sandbox Code Playgroud)

这是一个非常简单的例子 - 但基本上你可以Float32Array为AudioBuffer中的每个通道获取实例并反转它们.


Nul*_*lpo 6

如果你有一个AudioBufferSourceNode元素:

audioBufferSourceNode.playbackRate = -1;
Run Code Online (Sandbox Code Playgroud)

-编辑-

Webkit没有该功能.

资料来源:https://bugs.webkit.org/show_bug.cgi?id = 69725

  • 我试过这个,但它不起作用。播放速率音频参数的 minValue 为 0。当我将其设置为低于 0 的值时,它似乎以默认值(即 1)播放。 (2认同)