Как воспроизвести аудио в обратном направлении с помощью веб-аудио 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 не имеет этой функции.
Ответ 3
Вы можете использовать <audio>
элемент html5 и установить свойство playbackRate
на отрицательное значение.
В Javascript вы можете сделать следующее
var song = document.getElementsByTagName('audio')[0];
song.playbackRate = -1;
Ответ 4
playbackRate = -1.0;
теперь работает в Safari (9.1.2)!