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

Flash Player 9 以降、Adobe AIR 1.0 以降

サウンドファイルまたはビデオファイルをまだ読み込んでいる間にそのデータを再生することを、「ストリーミング」と呼びます。サウンドデータが完全にロードされなくてもサウンドを聴くことができるので、リモートサーバーからロードされる外部サウンドファイルの多くはストリーミングされます。

SoundMixer.bufferTime プロパティは、サウンドが再生される前に Flash Player または AIR が収集する必要のあるサウンドデータをミリ秒単位で示します。つまり、bufferTime プロパティが 5000 に設定されていると、Flash Player または AIR はサウンドが再生されるまでに、少なくとも 5000 ミリ秒分のデータをサウンドファイルからロードします。SoundMixer.bufferTime のデフォルト値は 1000 です。

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

import flash.media.Sound; 
import flash.media.SoundLoaderContext; 
import flash.net.URLRequest; 
 
var s:Sound = new Sound(); 
var req:URLRequest = new URLRequest("bigSound.mp3"); 
var context:SoundLoaderContext = new SoundLoaderContext(8000, true); 
s.load(req, context); 
s.play();

サウンドの再生時において、Flash Player および AIR はサウンドバッファーを同じサイズか、それ以上のサイズに維持します。サウンドデータが再生速度よりも速くロードされると、再生は中断することなく続行します。 しかし、ネットワークの制限によりデータの読み込み速度が低下すると、再生ヘッドがサウンドバッファーの最後に達する場合があります。その場合、再生は一時停止しますが、サウンドデータが読み込まれると自動的に再開します。

Flash Player または AIR がデータのロードを待機しているために再生が中断しているのかどうかを確認するには、Sound.isBuffering プロパティを使用します。