12

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

4

4 回答 4

17

你可以这样做:

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;
    });
});

这是一个超级简单的例子——但关键是你可以获取Float32ArrayAudioBuffer 中每个通道的实例并反转它们。

于 2012-06-11T00:11:59.357 回答
6

如果您有 AudioBufferSourceNode 元素:

audioBufferSourceNode.playbackRate = -1;

-编辑-

Webkit 没有这个功能。

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

于 2012-03-26T15:29:19.983 回答
4

您可以使用<audio>html5 的元素并将playbackRate属性设置为负值。

在 Javascript 中,您可以执行以下操作

var song = document.getElementsByTagName('audio')[0]; 
song.playbackRate = -1; 
于 2012-03-26T14:46:03.773 回答
1
playbackRate = -1.0;

现在可以在 Safari (9.1.2) 中使用!

于 2016-09-01T14:44:23.233 回答