2012-03-26 6 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; 
    }); 
}); 

をそれは超簡単な例だ - しかし、ポイントは、あなたがAudioBufferの各チャネルのためFloat32Arrayインスタンスをつかむことができ、基本的で、それらを逆にする。

+0

これはうまくいきます実際にはplaybackRateを負の数に設定するようなものを探していたので、クリップ内の同じポイントから順方向および逆方向の再生を簡単に行うことができましたが、有効な(そして作業中の)レスポンスで回答したので、それ! – lakenen

+0

ええ、あなたはおそらく少しハッキーなものを探していたと思っていましたが、これが私が思いつく唯一のアプローチでした。価値があるものについては、あなたは何をしたいのですか?しかし、私は実際にその場でバッファーを逆転しようとはしていませんでしたので、私は確かに言うことはできません。どちらの方法でも、Web Audio API。うまくいけば、いくつかのまともなドキュメントが今後数ヶ月で表示されることを願っています。 –

3

<audio>要素をhtml5に使用し、playbackRateプロパティを負の値に設定することができます。あなたはAudioBufferSourceNode要素を持っている場合

JavaScriptで次の

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

オーディオタグが自分の要件に適合しないため、Webオーディオ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

を行うことができます。

​​

-EDIT-

のWebkitは、その機能を持っていません。

出典:あなたはこのような何か行うことができますhttps://bugs.webkit.org/show_bug.cgi?id=69725

+1

私はこれを試しても動作しません。 playbackRate AudioParamのminValueは0です。これを0より小さい値に設定すると、defaultValue(1)で再生されているように見えます。 – lakenen

+1

Okey ...それは実際のバグです.Webkit :( https://bugs.webkit.org/show_bug.cgi?id=69725 – Nullpo

+1

これは実際にはうまくいくでしょう! – lakenen

1
playbackRate = -1.0; 

はSafari(9.1.2)で動作します。

関連する問題