Flash och Silverlight ersätts av ny HTML5 spelare

2010 skrev Steve Jobs ett öppet brev till Adobe där han dömde ut framtiden för att spela video i Flash. Problem då som nu är alla säkerhetshål som funnits i produkten genom åren. Säkerhetsproblemen i Adobe Flash har vuxit med tiden och var som högst förra året. Det har tagit nästa sex år för verkligheten att komma ikapp den visionära Steve Jobs, men nu händer det överallt.
Säkerhetsproblemen i Adobe Flash

Från och med Chrome 55, som beräknas släppas i december, så kommer användare bli tvungen att aktivt aktivera flash i browsern. Redan i Augusti så började Firefox blocka visst Flash-innehåll i  browsern. Och i den senaste OS versionen från Apple, MacOS Sierra, så kräver Safari att du aktivt godkänner att du vill se innehåll i Flash och att du känner till de säkerhetsproblem som finns med Flash. Microsoft rör sig även som i samma riktning med deras nya Edge browser.

I vårt OVP team, inom teknikavdelningen, bygger vi just nu nästa generations videospelare för både TV4 och C More. Tanken är att vi ska ersätta dagens gamla videospelare i Flash på TV4 Play och den gamla Silverlightspelaren på C More med en ny spelare byggd i HTML5. Flash för video slog igenom stort i och med lanseringen av Youtube 2005 och har sedan dess använts av bolag världen över för att spela video på internet. TV4 Play lanserade flash på TV4 2009, efter att länge använt Windows media. Vi ligger idag långt fram jämfört med många andra broadcasters runt om i världen som fortfarande är 100% beroende av Flash för att tjäna pengar på video.

Från ett användarperspektiv så är detta jättepositivt. Användarna av TV4Play och C More kan förvänta sig snabbare laddningstider, förbättra säkerhet och lägre batterianvändning. Att vi byggt allt internt och på en ny kodbas möjliggör även en snabbare utvecklingstakt framåt kring spelarfunktionalitet som exempelvis ad-insertion eller integrerad statistik. Här söker vi fler utvecklare som vill jobba med spelarutveckling på Android, IOS och HTML5.

Ett stort fokus för projektet har också varit att bryta ut spelaren från den övriga webbapplikationen. Genom att göra detta så kan samma spelare och funktionalitet användas på både TV4 Play och C More. Detta kommer ytterligare snabba på utvecklingen inom Bonnier Broadcasting och innebär att vi inte behöver lägga dubbla tiden på att bygga spelare separat för resp varumärke och sajt. Det innebär också att vi kan bygga upp en central spelarkompetens inom teknik.

Den nya HTML5-spelaren kommer att tas i bruk på C More under November månad och förhoppningsvis så kommer den sen att rullas ut på TV4 Play innan jul.

The Zen of Python

$ python
Python 2.7.2 (default, Oct 11 2012, 20:14:37)
Type "help", "copyright", "credits" or "license" for more information.
>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
>>>

Also this video is worth watching

Så funkar videostreaming

Som en fortsättning på vårt tidigare blogginlägg om adaptiv streaming där vi beskrev hur det går till när en videoström spelas upp på TV4 Play och där vi gav några tips på hur du får ner buffringen kommer här en utförligare beskrivning av hela streamingkedjan från inspelning till uppspelning.

Bilden nedan visar de många steg som strömmen måste gå genom innan den når användaren. För enkelhetens skull har vi delat upp dem i tre områden: produktion, distribution och leverans. Vi kan även kalla dem för ”TV4-huset”, ”molnet” respektive ”internet”.

I det första steget produceras programmet, antingen direkt genom en liveinspelning eller genom ett inköpt program. Bild och ljud synkas, sändningen kompletteras med textning, grafik etc, den kodas om till rätt videoformat, ett kopieringsskydd läggs på och slutligen skickas den till en dataserver. Allt detta sker tillsammans med vår partner Ericsson som också finns i TV4-huset.

I det andra steget distribueras videoströmmen genom en molntjänst som i vårt fall tillhandahålls av Akamai. Molnet fungerar på så sätt att programmet sprids till strategiskt utplacerade noder som ligger i nära anslutning till de största internetleverantörerna så att så många användare som möjligt kan nås snabbt. Där ligger videon och väntar på nästa steg.

I det tredje och sista steget levereras videoströmmen först när användaren trycker på Play-knappen i sin videospelare. Man hämtar alltså programmet från den närmaste molnnoden och slipper därmed gå hela vägen till våra servrar. Vilken väg som väljs beror helt och hållet på vilken internetleverantör man är ansluten till samt hur denna är sammankopplad med övriga aktörer på nätet.

För att testa hur bra uppkoppling du har till den närmaste leveransnoden (den gula operatörsrutan på bilden) kan du köra Bredbandskollen. Dock säger den ingenting om vad som händer under resten av vägen till det blå fältet.

Om du är nyfiken på vilken väg videoströmmen levereras till dig genom hela det gula fältet kan du använda programmet traceroute på din dator. I Windows kör du programmet cmd.exe och skriver tracert http://www.tv4play.se i fönstret.

På en Mac-dator öppnar du ett Terminal-fönster och skriver traceroute http://www.tv4play.se efter prompten.

Ju fler steg din dator tar genom internet desto större risk är det att något kan gå fel på vägen. Du kommer även att kunna se om din internetleverantör har en direktkoppling till Akamai (som i exemplet ovan) eller om den måste gå genom en annan operatör.

Som ett paket på posten

Har vi krånglat till det ordentligt för dig? Låt oss i så fall likna videostreaming vid ett postorderföretag. Säg att vårt postorderföretag specialiserat sig på tröjor med snygga tryck som vi har tillverkat (steg 1) och fraktat till ett antal lagerhus strategiskt utplacerade runt om i landet (steg 2). Vår kund är intresserad av en av våra fina tröjor och gör en beställning. Det som händer nu är att tröjan skickas till kunden via Posten till det närmaste ombudet (steg 3) där paketet kan hämtas.

Självklart finns det ett antal saker som kan gå fel. Vid tröjtillverkningen kanske någon har gjort ett feltryck eller så har maskinen gått sönder. Ett lagerhus får av misstag inte några tröjor i storleken XL. Och även om Posten säger att leveransen ska ta 2 – 5 dagar finns det ingen garanti på att tröjan kommer fram innan den där viktiga festen i helgen.

Översatt till videostreaming skulle detta kunna vara att fel program lagts in, att en kodare slutat fungera, att den högsta kvaliteten inte når till molnet vilket gör att en loop på en gammal sekvens spelas upp om och om igen samt att videosegmentet kommer för sent till videospelaren vilket tvingar den till buffring.

Videostreaming funkar alltså på samma sätt som vårt postorderföretag med den stora skillnaden att vi strimlat sönder tröjan i hundratals bitar som vi skickar i små paket var tionde sekund!

Epilog: den traditionella TV:n då?

Minns du bilden längst upp med de tre stegen produktion, distribution och leverans? Skrolla upp och begrunda den en stund och jämför den sedan med bilden nedan som representerar den vanliga TV-rutan.

Som du säkert insett skiljer sig bilderna ganska mycket. Anledningen är att vi har direktavtal med alla de stora TV-operatörerna och slipper därmed mellanhänder. Om något går fel är det med andra ord antingen vi eller de som kan klandras, men med färre steg blir det också mer sällan fel.

Om videostreaming kan jämföras med ett postorderföretag kan den traditionella TV:n liknas vid morgontidningen på hallgolvet. Du behöver inte beställa den varje dag och du behöver aldrig vänta på den; den bara ligger där lagom tills du vaknar. Vi är inte riktigt där än med våra tröjor men när tillräckligt många beställer sina klädesplagg över nätet kommer vi garanterat att hitta nya och effektivare sätt att leverera dem direkt till din dörr!

Så funkar adaptiv streaming

Ibland får vi frågor om varför det sker en fördröjning jämfört med TV-rutan när man tittar på en livesändning på TV4 Play. Förutom den fördröjning som internet medför är den största bidragande faktorn något som kallas adaptiv streaming.

Adaptiv streaming är en teknik som anpassar bild- och ljudkvaliteten efter användarens datorkapacitet och uppkopplingshastighet. Fördelen är att användaren alltid får den högsta kvalitet som utrustningen klarar av utan att behöva tänka på att justera nivån. TV4 använder adaptiv streaming både på datorer genom Adobes HDS och på mobila enheter genom Apples HLS.

När man startar en adaptiv ström kan man först uppleva en låg kvalitet. Om datorn eller enheten känner att den hinner hämta hem en högre kvalitet kommer den att göra det. Denna kontroll görs därefter under hela uppspelningen och om den skulle uppleva att det sker en nätverksöverbelastning kommer nästa segment att bestå av en lägre kvalitet.

Hos oss kodas allt videomaterial i segment om tio sekunder. Redan där får man en fördröjning på tio sekunder eftersom man måste vänta in produktionen av segmentet innan det kan skickas till användaren. Utöver detta segment behöver användaren ytterligare två segment för att inte riskera att det buffrar i väntan på nästkommande segment. Sammanlagt innebär detta att 30 sekunder av liveinspelningen måste finnas tillgänglig innan den kan skickas till användaren.

Varför ändras kvaliteten?

Nedan följer tre exempel på valet av kvalitet när nästa segment ska hämtas hem. I alla tre fallen har tre segment redan spelats in – A, B och C – varav de två första är hämtade (gröna). Medan vi spelar upp segment A hämtar vi hem segment C (gult). För enkelhetens skull säger vi att kvaliteten på segment D (rött) bedöms utefter hur snabbt vi hämtar hem segment C (i själva verket tas hänsyn även till tidigare segment).

I fall 1 gick det snabbare än tio sekunder att hämta segment C. Därför väljer vi en högre kvalitet på segment D eftersom vi hinner hämta det innan det ska spelas upp.

Högre kvalitet

I fall 2 tog det runt tio sekunder att hämta hem segment C. Därför behåller vi den befintliga kvaliteten även för segment D för att vara på den säkra sidan.

Samma kvalitet

I fall 3 tog det mer än tio sekunder att hämta hem segment C. Därför sänker vi kvaliteten på segment D eftersom vi annars inte hade hunnit hämta det.

I värsta fall hinner vi inte hämta hem segment C innan det är dags att spela upp det. I det senaste exemplet ovan hade vi endast fem sekunder tillgodo. Om vi inte hinner kommer videospelaren att buffra tills segment C är färdighämtat. Därefter kommer segment D att bestå av en låg kvalitet tills vi är ikapp igen.

Varför buffrar det?

En orsak till att det buffrar kan vara att det sker en hög belastning på datorn (flera andra processer är igång samtidigt) vilket gör att videospelaren inte hinner avkoda det senaste segmentet. Exempel på bakomliggande processer kan vara en Skype-chat eller att man håller på att tanka hem en stor fil. Tipset här är att stänga ner alla program som kan störa videospelaren.

En annan orsak kan vara att det sker en tillfällig överbelastning på nätet. Detta har ingenting med hur hög bandbredd man har utan beror helt och hållet på hur internet är uppbyggt. Precis som all annan trafik skickas segmenten genom olika vägar och ibland stöter man på ett väghinder. Säkert har alla någon gång upplevt att en webbsida tar ovanligt lång tid att ladda; när man sedan provar igen går det snabbare. Här är det samma princip som gäller med skillnaden att vi har ett väldigt snävt tidsfönster att förhålla oss till innan vi upplever ett hack i videouppspelningen.

Tyvärr har vi begränsade möjligheter att förebygga nätverksöverbelastning, framför allt i mobila nät. Det man kan göra är att se över sin bredbandsutrustning (modem, router, etc.) eller att försöka stanna kvar på en plats som har bra täckning. Internet var inte uppbyggt med hänsyn till direkt dataöverföring och även om teknikens utveckling har möjliggjort detta är vi fortfarande inte framme vid en helt buffringsfri TV-upplevelse över nätet.

En kedja utan några svaga länkar

Idag medverkade TV4 på en heldagsmässa arrangerad av forskningsprojekten EFRAIM och SAIL där vi pratade om videostreaming och vilka utmaningar och möjligheter vi ser inom området.

Streamad video till datorer och mobila enheter är ett snabbt växande område i Norden och TV4-Gruppen har länge varit en bidragande faktor till detta genom bland annat TV4 Play, C Sports och nu senast Filmnet som lanserades i höstas. De utmaningar som branschen ser är att det inte alltid finns standarder inom den bakomliggande tekniken. Samtidigt har vi ingen möjlighet att kontrollera hela kedjan från publiceringen till slutanvändaren. Det är därför viktigt att samarbeta med distributörer och operatörer för att hitta nya sätt att leverera högkvalitativt material till våra tittare.

Vi ser en ökad användning av mobila enheter och även livesändningarna blir allt mer populära vilka ställer helt andra krav på kvaliteten jämfört med traditionella on-demand-tjänster. Man förväntar sig exempelvis att videon startar omedelbart och att det inte sker någon fördröjning jämfört med den linjära TV:n i vardagsrummet. Detta i kontrast till video-on-demand där bitraten är viktigast.

De frågor som diskuterades under dagen var bland annat hur vi skulle kunna samarbeta med alla parter i värdekedjan i syfte att förbättra den användarupplevda kvaliteten. Hade det inte varit underbart om vi direkt hade kunnat svara på var flaskhalsen ligger när en upprörd tittare hör av sig angående kvalitetsbrister? Vi är inte riktigt där än och det kommer att krävas en djupare dialog med både internetleverantörer och CDN:er.

Idag lever vi i en värld där det endast erbjuds best-effort inom videostreaming eftersom ingen part kan garantera en hög kvalitet hela vägen till användarna. Samtidigt är det få kunder som skulle vara beredda att betala extra för en garanterad kvalitet eftersom man förväntar sig det redan idag. Därför gäller det att hitta metoder som förbättrar kvaliteten utan att affärsmodellen ska behöva lida.

Det finns många utmaningar som EFRAIM-projektet angriper men däri ligger också möjligheterna. Det tvååriga projektet startades i höstas och kan mycket väl komma att bli en viktig plattform i konsortiet att diskutera framtida modeller för mediadistribution som inte bara är kostnadseffektiva utan även gynnar slutanvändarna.