2012-03-26 13 views

Antwort

13

Sie so etwas tun könnte:

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

Es ist ein super einfaches Beispiel - aber der Punkt ist im Grunde, dass Sie die Float32Array Instanz für jeden Kanal in der Audiobuffer greifen und umkehren sie.

+0

Das funktioniert, danke war eigentlich auf der Suche nach etwas mehr wie Einstellung von PlaybackRate auf eine negative Zahl, so dass ich etwas vorwärts und rückwärts leicht vom gleichen Punkt in dem Clip spielen kann, aber da Sie die Frage mit einer gültigen Antwort beantwortet (und arbeiten!), werde ich akzeptieren – lakenen

+0

Ja, ich dachte, du suchst wahrscheinlich etwas weniger Hackiges, aber das war der einzige Ansatz, den ich mir vorstellen konnte.Was es wert ist, ist es wahrscheinlich immer noch möglich, etwas Code für diesen Ansatz zu entwickeln was du willst - aber ich habe nicht wirklich versucht, den Puffer im laufenden Betrieb umzukehren, also kann ich nicht mit Sicherheit sagen, wie auch immer, es ist gut, andere Entwickler zu sehen, die mit dem Web Audio spielen API. Hoffentlich werden einige anständige Dokumente in den nächsten Monaten auftauchen. –

3

Sie können <audio> Element von html5 verwenden und playbackRate Eigenschaft auf negativen Wert festlegen.

In Javascript können Sie die folgenden Aktionen

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

Das Audio-Tag erfüllt nicht meine Anforderungen, weshalb ich die Web-Audio-API speziell verwenden muss. – lakenen

+0

Die Wiedergaberate sollte zwischen 0,5 und 4,0 liegen. Negative Werte funktionieren noch nicht. [MDN-Quelle] (https://developer.mozilla.org/en-US/Apps/Fundamentals/Audio_and_video_delivery/WebAudio_playbackRate_explained) – nicusor

6

, wenn Sie ein AudioBufferSourceNode Element haben:

audioBufferSourceNode.playbackRate = -1; 

-EDIT-

Webkit nicht über diese Funktion.

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

+1

Ich habe das versucht und es funktioniert nicht. Der minValue-Wert von playbackRate AudioParam ist 0. Wenn ich ihn auf einen Wert unter 0 setze, scheint er mit dem Standardwert (was 1 ist) wiedergegeben zu werden. – lakenen

+1

Okey ... es ist ein echter Bug es webkit :( https://bugs.webkit.org/show_bug.cgi?id=69725 – Nullpo

+1

Es wäre toll, wenn das tatsächlich funktioniert! – lakenen

1
playbackRate = -1.0; 

funktioniert in Safari (9.1.2) jetzt!

Verwandte Themen