When a
sound file or video file is playing back while its data is still
being loaded, it is said to be
streaming
. Sound files loaded
from a remote server are often streamed so that the user doesn’t
have to wait for all the sound data to load before listening to
the sound.
The
SoundMixer.bufferTime
property
represents the number of milliseconds of sound data that an application
gathers before letting the sound play. In other words, if the
bufferTime
property
is set to 5000, the application loads at least 5000 milliseconds
worth of data from the sound file before the sound begins to play.
The default
SoundMixer.bufferTime
value is 1000.
Your application can override the global
SoundMixer.bufferTime
value
for an individual sound by explicitly specifying a new
bufferTime
value
when loading the sound. To override the default buffer time, first
create an instance of the SoundLoaderContext class, set its
bufferTime
property,
and then pass it as a parameter to the
Sound.load()
method.
The following example shows this:
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();
As playback continues, AIR tries to keep the sound buffer at
the same size or greater. If the sound data loads faster than the
playback speed, playback continues without interruption. However,
if the data loading rate slows down because of network limitations,
the playhead could reach the end of the sound buffer. If this happens,
playback is suspended, though it automatically resumes once more
sound data has been loaded.
To
find out if playback is suspended because AIR is waiting for data
to load, use the
Sound.isBuffering
property.