Si se reproduce un archivo de sonido o de vídeo mientras se cargan sus datos, se dice que se está
transmitiendo
el archivo. Los archivos de sonido externos que se cargan desde un servidor remoto suelen transmitirse; de este modo, no es necesario que el usuario espere hasta que se carguen todos los datos para poder escuchar el sonido.
La propiedad
SoundMixer.bufferTime
representa el número de milisegundos de datos de sonido que deben recopilar Flash Player o AIR antes de permitir la reproducción de sonido. Es decir, si la propiedad
bufferTime
se establece en 5000, Flash Player o AIR cargan al menos 5000 milisegundos (el equivalente en datos) del archivo de sonido antes de empezar a reproducir el sonido. El valor predeterminado de
SoundMixer.bufferTime
es 1000.
La aplicación puede sustituir el valor global de
SoundMixer.bufferTime
para un sonido determinado especificando explícitamente un nuevo valor de
bufferTime
al cargar el sonido. Para sustituir el tiempo de búfer predeterminado, primero hay que crear una nueva instancia de la clase SoundLoaderContext, establecer el valor de su propiedad
bufferTime
y pasarla como un parámetro al método
Sound.load()
, tal como se muestra a continuación:
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();
Mientras sigue la reproducción, Flash Player y AIR intentan mantener el tamaño del búfer de sonido en un valor igual o mayor. Si los datos de sonido se cargan más rápido que la velocidad de reproducción, esta continuará sin interrupciones. Sin embargo, si la velocidad de carga de los datos disminuye debido a limitaciones de red, la cabeza lectora podría alcanzar el final del búfer de sonido. Si esto sucede, se suspende la reproducción, aunque se reanudará automáticamente en cuanto se hayan cargado más datos de sonido.
Para determinar si se ha suspendido la reproducción porque Flash o AIR están esperando a que se carguen más datos, se debe utilizar la propiedad
Sound.isBuffering
.