Как я могу воспроизводить аудио в обратном порядке с помощью API веб-аудио?

Как воспроизвести аудио в обратном направлении с помощью веб-аудио API? Я не могу ничего найти в документах API...

Ответ 1

Вы можете сделать что-то вроде этого:

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

Это супер простой пример - но в основном это то, что вы можете захватить экземпляр Float32Array для каждого канала в AudioBuffer и отменить их.

Ответ 2

если у вас есть элемент AudioBufferSourceNode:

audioBufferSourceNode.playbackRate = -1;

-Edit -

Webkit не имеет этой функции.

Источник: https://bugs.webkit.org/show_bug.cgi?id=69725

Ответ 3

Вы можете использовать <audio> элемент html5 и установить свойство playbackRate на отрицательное значение.

В Javascript вы можете сделать следующее

var song = document.getElementsByTagName('audio')[0]; 
song.playbackRate = -1; 

Ответ 4

playbackRate = -1.0;

теперь работает в Safari (9.1.2)!