Förbättringar för nätverksinteraktion

I Flash Player 10.1 och AIR 2.5 introduceras en uppsättning nya funktioner för nätverksoptimering på alla plattformar, inklusive cirkulär bufferthantering och smart sökning.

Cirkulär bufferthantering

När du överför medieinnehåll till mobilenheter kan du träffa på problem som du nästan aldrig förväntar dig på vanliga datorer. Det är exempelvis vanligare att du får slut på diskutrymmet eller minnet. Vid inläsning av video hämtas och cachelagras hela FLV-filen (eller MP4-filen) på hårddisken i datorversionerna av Flash Player 10.1 och AIR 2.5. Därefter spelas videon upp från cachefilen. Det är ovanligt att diskutrymmet tar slut. Om detta skulle inträffa avbryts videouppspelningen på datorn.

Det är betydligt vanligare att en mobilenhet får slut på diskutrymmet. Om diskutrymmet tar slut avbryts dock inte uppspelningen, som den gör på datorn. I stället återanvänds cachefilen genom att körningsmiljön börjar skriva till den igen från början. Användaren kan fortsätta att titta på videon. Användaren kan inte söka i det område som skrivs om, förutom i början av filen. Cirkulär bufferthantering startas inte som standard. Den kan startas under uppspelningen och även i början av uppspelningen om filmen är större än diskutrymmet eller RAM-minnet. För körningsmiljön krävs minst 4 MB RAM-minne eller 20 MB ledigt utrymme på hårddisken för att det ska gå att använda cirkulär bufferthantering.

Obs! Om enheten har tillräckligt med diskutrymme fungerar mobilversionen av miljön på samma sätt som på datorn. Tänk på att en buffert i RAM-minnet används som reserv om det inte finns tillräckligt med minne i enheten eller om disken är full. Ett gränsvärde för storleken på cache-filen och RAM-bufferten kan ställas in vid kompileringen. Vissa MP4-filer har en struktur som kräver att hela filen måste laddas ned innan uppspelningen kan börja. Sådana filer identifieras och laddas inte ned om det inte finns tillräckligt med diskutrymme, och MP4-filen kan i så fall inte spelas upp. Det bästa kan vara att inte begära nedladdning av dessa filer över huvud taget.

Som utvecklare ska du tänka på att endast söka efter arbeten inom gränserna för den cache-lagrade strömmen. NetStream.seek() kan ibland misslyckas om förskjutningen ligger utanför intervallet och i detta fall skickas en NetStream.Seek.InvalidTime -händelse.

Smart sökning

Obs! För funktionen för smart sökning krävs Adobe® Flash® Media Server 3.5.3.

I Flash Player 10.1 och AIR 2.5 introduceras ett nytt beteende, som kallas smart sökning och som förbättrar prestanda för direktuppspelad video. Om användaren söker ett mål inom buffertens gränser återanvänds bufferten så att sökningen blir omedelbar. I tidigare versioner av körningsmiljön återanvändes inte bufferten. Om en användare till exempel spelade upp en video från en direktspelande server, med bufferttiden var inställd på 20 sekunder ( NetStream.bufferTime ), och användaren försökte söka 10 sekunder framåt, skulle alla buffertdata kastas och de 10 sekunder som redan lästs in skulle inte återanvändas. Detta beteende innebar att miljön var tvungen begära nya data från servern mycket oftare, vilket resulterade i dålig uppspelningsprestanda på långsamma anslutningar.

Bilden nedan visar hur bufferten fungerade i tidigare versioner av körningsmiljön. Med egenskapen bufferTime anges antalet sekunder som ska laddas in i förväg, så att bufferten kan användas för att fortsätta spela upp videon om anslutningshastigheten skulle försämras:

Buffertbeteende innan funktionen smart sökning fanns

Med funktionen för smart sökning används nu bufferten för att ge direkt framåt- eller bakåtsökning när användaren drar videon framåt eller bakåt. I följande bild visas det nya beteendet:

Framåtsökning med funktionen smart sökning

Bakåtsökning med funktionen smart sökning

Vid smart sökning återanvänds bufferten när användaren söker framåt eller bakåt vilket gör uppspelningsupplevelsen snabbare och enklare. En av fördelarna med det nya beteendet är att de som publicerar videon kan spara på bandbredden. Om sökningen däremot går utanför buffertgränserna används standardbeteendet, och nya data begärs från servern.

Obs! Detta beteende gäller dock inte för hämtning av progressiv video.

Om du vill använda smart sökning anger du NetStream.inBufferSeek som true .