ストリーミングサウンドファイルの操作

サウンドファイルまたはビデオファイルをまだ読み込んでいる間にそのデータを再生することを、 ストリーミング と呼びます。リモートサーバーから読み込まれるサウンドは、すべてのサウンドデータが読み込まれるのを待たなくてもユーザーがサウンドを聴くことができるよう、ストリーミングされることがよくあります。

SoundMixer.bufferTime プロパティは、サウンドを再生する前にアプリケーションが収集するサウンドデータのミリ秒数を表します。つまり、 bufferTime プロパティが 5000 に設定されている場合、アプリケーションはサウンドファイルから少なくとも 5000 ミリ秒のデータを読み込んでからサウンドの再生を開始します。 SoundMixer.bufferTime のデフォルト値は 1000 です。

アプリケーションでは、サウンドを読み込むときに bufferTime の新しい値を明示的に指定することで、個別のサウンドについてグローバルな SoundMixer.bufferTime の値をオーバーライドできます。デフォルトのバッファー時間をオーバーライドするには、まず SoundLoaderContext クラスのインスタンスを作成してその bufferTime プロパティを設定し、次にパラメーターとして Sound.load() メソッドに渡します。次に、この例を示します。

var s = new air.Sound(); 
var url = "http://www.example.com/sounds/bigSound.mp3"; 
var req = new air.URLRequest(url); 
var context = new air.SoundLoaderContext(8000, true); 
s.load(req, context); 
s.play();

再生が続いている間、AIR はサウンドバッファーを指定されたサイズ以上の大きさで保持しようとします。サウンドデータの読み込みが再生速度より速い場合、再生は中断せずに継続します。しかし、ネットワークの制限によりデータの読み込み速度が低下すると、再生ヘッドがサウンドバッファーの最後に達する場合があります。その場合、再生は一時停止しますが、サウンドデータが読み込まれると自動的に再開します。

AIR がデータの読み込みを待っているために再生が中断しているのかどうかを判定するには、 Sound.isBuffering プロパティを使用します。