2012-03-26 3 views

답변

13

당신은 이런 식으로 뭔가를 할 수 :

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 인스턴스를 잡을 수있는 기본적이며, 그들을 뒤집으십시오.

+0

감사합니다. 실제로 playbackRate를 음수로 설정하는 것과 비슷한 것을 찾고 있었기 때문에 클립의 같은 지점에서 앞뒤로 쉽게 재생할 수 있었지만 유효한 응답 (및 작동하는!) 응답을받은 이후로 나는 받아 들일 것입니다. – lakenen

+0

그래, 아마 당신이 뭔가 좀 덜 해커를 찾고 있다고 생각했는데, 이것이 내가 얻을 수있는 유일한 방법이었다. 가치있는 일을 위해서,이 접근법에 대해 몇 가지 코드를 만들 가능성이있다. 당신이 원하는 것은 -하지만 실제로 비행 중에 버퍼를 반대로 시도하지 않은, 그래서 나는 확실히 말할 수 없다. 어느 쪽이든, 그것은 다른 devs 웹 오디오와 놀고 보는 것이 좋다. API. 다행히 몇 개월 후에 적절한 문서가 표시되기를 바랍니다. –

3

<audio> 요소를 html5의 요소로 사용하고 playbackRate 속성을 음수 값으로 설정할 수 있습니다. 당신이 AudioBufferSourceNode 요소가있는 경우

자바 스크립트에서 다음과 같은

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

오디오 태그가 내 요구 사항을 수행하지 못하기 때문에 특별히 웹 오디오 API를 사용해야합니다. – lakenen

+0

재생 속도는 0.5와 4.0 사이 여야합니다. 음수 값은 아직 작동하지 않습니다. [MDN 소스] (https://developer.mozilla.org/en-US/Apps/Fundamentals/Audio_and_video_delivery/WebAudio_playbackRate_explained) – nicusor

6

을 수행 할 수 있습니다

audioBufferSourceNode.playbackRate = -1; 

-EDIT-

웹킷은 해당 기능이 없습니다.

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

+1

시도했지만 작동하지 않습니다. playbackRate AudioParam의 minValue는 0입니다. 0보다 낮은 값으로 설정하면 defaultValue (1)에서 재생되는 것처럼 보입니다. – lakenen

+1

Okey ... 실제 버그입니다. 웹킷 :( https://bugs.webkit.org/show_bug.cgi?id=69725 – Nullpo

+1

이것이 실제로 작동하면 좋을 것입니다! – lakenen

1
playbackRate = -1.0; 

은 Safari (9.1.2)에서 작동합니다!