Säkerhetsaspekter vid inläsning och uppspelning av ljud

Flash Player 9 och senare, Adobe AIR 1.0 och senare

Programmets möjligheter att nå ljuddata kan vara begränsade enligt säkerhetsmodellen i Flash Player eller AIR. Varje ljud begränsas av två olika säkerhetssandlådor, sandlådan för innehållet (”innehållssandlådan”) och sandlådan för programmet eller objektet som läses in och spelar upp ljudet (”ägarsandlådan”). När det gäller AIR-programinnehåll i säkerhetssandlådan application, är alla ljud (även dem som läses in från andra domäner) tillgängliga för innehållet i säkerhetssandlådan application. Innehåll i andra säkerhetssandlådor följer emellertid samma regler som innehåll som körs i Flash Player. Mer information om Flash Player säkerhetsmodell i allmänhet och definitionen av sandlåda finns i Säkerhet.

Innehållssandlådan styr om detaljerad ljuddata kan extraheras från ljudet med id3-egenskapen eller SoundMixer.computeSpectrum()-metoden. Den begränsar inte inläsningen eller uppspelningen av själva ljudfilen.

Ursprungsdomänen för ljudfilen definierar säkerhetsbegränsningarna för innehållssandlådan. Vanligtvis har programmet eller objektet fullständig åtkomst till ljudfilen om en den finns i samma domän eller mapp som SWF-filen för programmet eller objektet som läser in den. Om ljudet kommer från en annan domän än programmet kan det fortfarande läsas in till innehållssandlådan via en principfil.

Programmet kan överföra ett SoundLoaderContext-objekt med en checkPolicyFile-egenskap som en parameter till Sound.load()-metoden. Om du sätter egenskapen checkPolicyFile till true söker Flash Player eller AIR efter en principfil på servern som ljudet läses in från. Om det finns en principfil och den godkänner domänen för den inläsande SWF-filen, kan SWF-filen läsa in ljudfilen, få åtkomst till id3-egenskapen i Sound-objektet och anropa SoundMixer.computeSpectrum()-metoden för inlästa ljud.

Ägarsandlådan styr lokal uppspelning av ljuden. Programmet eller objektet som startar uppspelningen av ett ljud definieras som ägarsandlådan.

Metoden SoundMixer.stopAll() avbryter ljuden i alla SoundChannel-objekt som spelas upp om de uppfyller följande kriterier:

  • Ljuden startades av objekt inom samma ägarsandlåda.

  • Ljuden kommer från en källa med en principfil som godkänner åtkomst till domänen för programmet eller objektet som anropar SoundMixer.stopAll()-metoden.

I ett AIR-program begränsas emellertid inte innehåll i säkerhetssandlådan application (innehåll som installeras med AIR-programmet) av de här säkerhetsbegränsningarna.

För att ta reda på om SoundMixer.stopAll()-metoden faktiskt kommer att stoppa alla ljud som spelas upp kan programmet anropa metoden SoundMixer.areSoundsInaccessible(). Om metoden returnerar värdet true omfattas några av ljuden som spelas upp inte av styrningen från den aktuella ägarsandlådan och kommer inte att stoppas av SoundMixer.stopAll()-metoden.

Metoden SoundMixer.stopAll() stoppar också spelhuvudet från uppspelning av ljud som lästes in från externa filer. Däremot kan ljud som är inbäddade i FLA-filer och kopplade till bildrutor på tidslinjen som använder Flash-utvecklingsverktyget börja spelas upp igen om animeringen flyttas till en ny bildruta.