How can I play audio in reverse with web audio API?

后端 未结 4 1789
野的像风
野的像风 2021-01-02 03:08

How can I play audio in reverse with the web audio API? I can\'t seem to find anything in the API docs...

相关标签:
4条回答
  • 2021-01-02 03:33

    if you have an AudioBufferSourceNode element:

    audioBufferSourceNode.playbackRate = -1;
    

    -EDIT-

    Webkit doesn't have that feature.

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

    0 讨论(0)
  • 2021-01-02 03:33

    You can use <audio> element of html5 and set playbackRate property to negative value.

    In Javascript you can do the following

    var song = document.getElementsByTagName('audio')[0]; 
    song.playbackRate = -1; 
    
    0 讨论(0)
  • You could do something like this:

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

    It's a super simple example - but the point is basically that you can grab the Float32Array instance for each channel in the AudioBuffer and reverse them.

    0 讨论(0)
  • 2021-01-02 03:45
    playbackRate = -1.0;
    

    works in Safari (9.1.2) now!

    0 讨论(0)
提交回复
热议问题