Arbeta med direktuppspelade ljudfiler

Flash Player 9 och senare, Adobe AIR 1.0 och senare

När en ljudfil eller videofil spelas upp samtidigt som data fortfarande läses in kallas det för direktuppspelning. Externa ljudfiler som läses in från en fjärrserver är ofta direktuppspelade så att användaren inte behöver vänta på att alla ljuddata ska läsas in före avlyssning av ljudet.

Egenskapen SoundMixer.bufferTime representerar antalet millisekunder av ljuddata som Flash Player eller AIR ska samla in före ljudet spelas upp. M.a.o., om egenskapen bufferTime anges till 5000, läser Flash Player eller AIR in minst 5000 millisekunder av data från ljudfilen innan ljudet börjar spelas upp. Standardvärdet för SoundMixer.bufferTime är 1000.

Du kan ersätta det globala SoundMixer.bufferTime-värdet i ditt program för ett individuellt ljud genom att explicit specificera ett nytt bufferTime-värde när ljudet läses in. När du vill åsidosätta standardbufferttiden skapar du först en ny instans av klassen SoundLoaderContext och anger dess bufferTime-egenskap och skickar den sedan som en parameter till Sound.load()-metoden enligt exemplet nedan:

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();

Under uppspelningsförloppet försöker Flash Player och AIR behålla samma buffertstorlek eller större för ljudet. Om ljuddata läses in fortare än uppspelningshastigheten, fortsätter uppspelningen utan avbrott. Men om datainläsningshastigheten saktar ned på grund av nätverksbegränsningar kan spelhuvudet nå slutet på ljudbufferten. Om detta händer inaktiveras uppspelningen men återupptas automatiskt när mer ljuddata har lästs in.

Använd egenskapen Sound.isBuffering för att ta reda på om Flash Player eller AIR väntar på data för inläsning.