Работа с потоковыми аудиофайлами

Flash Player 9 и более поздних версий, Adobe AIR 1.0 и более поздних версий

Когда звуковой или видеофайл воспроизводится в процессе загрузки его данных, он называется потоковым. Внешние аудиофайлы, загружаемые с удаленного сервера, часто загружаются методом потоковой передачи, благодаря которой пользователю не нужно ждать загрузки всех аудиоданных, чтобы услышать звук.

Свойство SoundMixer.bufferTime представляет количество миллисекунд аудиоданных, которое проигрыватель Flash Player или AIR должен загрузить перед началом воспроизведения звука. Другими словами, если свойство bufferTime имеет значение 5000, проигрыватель Flash Player или AIR загружает фрагмент файла продолжительностью не менее 5000 миллисекунд, прежде чем начнется воспроизведение звука. По умолчанию свойство SoundMixer.bufferTime имеет значение 1000.

Приложение может переопределить глобальное значение SoundMixer.bufferTime для отдельного звука, задав новое значение 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.