3

html5 webaudio に関する質問: 複数の曲を結合することは可能ですか?

webaudio を使用して同時に再生されるさまざまなトラックがありますが、オーディオを処理する必要があるため、各トラックが独自のバッファーを持つのではなく、1 つのバッファー内にすべてのオーディオが必要です。

チャネル データを追加してマージしようとしましたが、常に「Uncaught RangeError: Index is out of range.」というメッセージが表示されます。

function mergeBuffers(recBuffers, recLength){

  var result = new Float32Array(recLength*2);
  var offset = 0;
  for (var i = 0; i < recBuffers.length; i++){
    result.set(recBuffers[0], offset);
    offset += recBuffers[0].length;
  }
  return result;
}

var recBuffersL = [];
for (var i=0;i<audioTracks.length; i++)
{
    recBuffersL[i] = audioTracks[i].currentBuffer.getChannelData(0);

}

var recBuffersR = [];
for (var i=0;i<audioTracks.length; i++)
{
    recBuffersR[i] = audioTracks[i].currentBuffer.getChannelData(1);

}


var buffers = [];
buffers.push( mergeBuffers(recBuffersL, recBuffersL.length) );
buffers.push( mergeBuffers(recBuffersR, recBuffersR.length) );
4

3 に答える 3

4

それが可能であることが判明しました:私はFloat32Arrayを合計しなければなりませんでした

于 2012-12-04T20:38:47.757 に答える
1

OfflineAudioContext を使用して、結果のバッファーを取得できます。これにより、リアルタイムよりも高速に処理 + マージできます。

于 2013-01-31T22:17:33.413 に答える