Trabajo con archivos de flujo de sonido

Flash Player 9 y posterior, Adobe AIR 1.0 y posterior

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 .