0

完全な質問:長い音にはAudioBufferではなく、MediaElementAudioSourceNodeを使用する方が適切なのはなぜですか?長めのサウンドにMediaElementAudioSourceNodeを使用する方が適しているのはなぜですか?

From MDN:これらのタイプの

オブジェクトは小さなオーディオ断片、典型的には45の未満Sを保持するように設計されています。より長いサウンドの場合、MediaElementAudioSourceNodeを実装するオブジェクトがより適しています。

From the specification

このインタフェースは、(ワンショット音及び他の短いオーディオクリップの)メモリ常駐オーディオアセットを表します。そのフォーマットはノンインターリーブ32ビットリニア浮動小数点PCM値で、[-1,1] [ - 1,1]の通常の範囲ですが、値はこの範囲に限定されません。 1つまたは複数のチャネルを含むことができます。通常、PCMデータの長さはかなり短く(通常は1分未満)なります。音楽サウンドトラックなどのより長いサウンドの場合、ストリーミングはオーディオエレメントとMediaElementAudioSourceNodeで使用する必要があります。

  1. AudioBufferMediaElementAudioSourceNode以上を使用することの利点は何ですか?
  2. ショートクリップにMediaElementAudioSourceNodeを使用すると、不利な点はありますか?

答えて

2
  1. MediaElementSourceNodeはストリーミングする潜在的能力を持っている - と、全体のサウンドファイルがダウンロードされ、復号化された前に、確かに再生を開始します。また、サウンドファイルを32ビットのリニアPCM(CD品質のオーディオは1チャンネルあたり16ビットのみ)に変換し、出力デバイスのサンプルレートにトランスコードすることなく、これを行うことができます。たとえば、16ビット、16kHzで録音された1分間のポッドキャストは、ネイティブでは2メガバイト以下になります。 48kHzデバイスで再生する場合(珍しいことではありません)、32ビットの48kHzへのトランスコードは、AudioBufferとしてほぼ12メガバイトを使い切っていることを意味します。

  2. MediaElementSourceNodeは、正確な再生タイミングや、多数の同時サウンドを管理/再生する能力を提供しません。精度はユースケースでは合理的かもしれませんが、AudioBufferのようなサンプル精度のタイミングはありません。

+0

興味深いことに、なぜ 'MediaElementSourceNode'が出力デバイスのサンプルレートにトランスコードする必要はありませんか?私は、出力デバイスとは異なるサンプルレートのサウンドを演奏すると、サンプルのピッチとスピードが変更されると思っていました(私の経験では 'AudioBuffer'の場合です)。私はDAWを作成しているので、私が得ることができる最も正確な再生タイミングが必要です。そのため、AudioBufferを使用します。助けてくれてありがとう! – maximedupre

+1

出力サンプルレート(別名AudioContextレート)にトランスコードする必要がありますが、バッファ全体だけでなく、一度にストリームのチャンクに対しても行うことができます。 – cwilso

+1

AudioBuffersは、decodeAudioData()を使用している場合は、適切なサンプルレートで適切にリサンプリングする必要があります。 – cwilso

関連する問題