2016 blir året for Flash-fri videoavspilling hos NRK. Den korte historien er at NRK er i gang med å kvitte seg med bruk av Flash og andre omveier for avspilling av video på nett-tjenestene våre – en gang for alle. Om det var kun den informasjonen du lette etter, trenger du ikke lese videre – det kommer. Men om du er interessert i hvorfor det ikke er gjort i en håndvending, bør du henge med i noen avsnitt til.

Den lange historien

Den lange historien er at IP-basert streaming og videoavspilling – enten det er i native apps, på web eller andre plattformer – fremdeles innebærer endel herk og småirritasjon for publikum – selv i 2015. Av og til spoler det tregt. Eller det hakker. Eller du bruker en tjeneste som av en eller annen grunn ikke støtter videoavspilling på akkurat din dings. Av og til blir du også bedt om å installere et eller annet for å komme videre, enten det er Flash, Silverlight eller en app. Det er særlig det siste vi nå har begynt arbeidet med å forbedre: Å tilby en enhetlig løsning for videoavspilling på NRKs nett-tjenester, som ikke krever innstallering av tredjeparts-programvare som Flash, egne apper eller annet fuzz for å fungere.

Videoavspilling i NRK

NRKs distribusjon av video skal dekke svært varierte bruksområder: vi har alt fra korte nyhetsklipp på 30 sekunder til et arkiv av 75 000 TV-programmer og 150 000 radioprogrammer. Vi streamer TV-kanaler, pressekonferanser, fuglekasser og sommerbåter direkte med mulighet for å spole en måned tilbake. Dette skal ikke bare spille på web, men på set-top-bokser, Smart-TV og native-apper. Avspillingen skal også støtte teksting (som byr på problemstillinger som er verdt en egen artikkel for seg). Gitt denne innholdsbredden og villnisset av plattformer, formater og transportmetoder har det vært nødvendig med noen avgrensninger av valg av basisteknologier. For NRKs del innebærer alle teknologivalg rundt enkoding, distribusjon og transportteknologi for video vanskelige avveininger mellom brukeropplevelse, kostnader og praktikalitet – men med et pragmatisk hovedmål om å gi best mulig løsning til et bredest mulig publikum. Og det er midlest talt en kronglete øvelse, som vi skal se.

Hvordan havnet vi her?

Nye internett-teknologier blir til i et interessefellesskap som er splittet mellom motstridende økonomiske interesser, ulike teknologiske moteretninger og ideologiske tankesett. Standardiseringen av videoavspilling på web havnet midt oppe disse motsetningene. I 2007 foreslo Opera med Håkon Wium Lie i spissen at videoavspilling – i likhet med bilder og bildeformater – burde få førsteklasses støtte i nettleserne, uten bruk av eksterne teknologier som Flash. Et premiss for dette forslaget var at bransjen ble enige om en felles standard for alle mekanismene bak videoavspilling. Slik skulle det ikke gå. Som vi har skrevet om tidligere, er årsakene til problemene rundt videoavspilling på internett sammensatte: For å kunne lagre, distribuere og spille av video av høy kvalitet på en kostnadseffektiv måte, må videoinnholdet kodes om før det når mottakeren. Denne kodingen gjøres på et format som skal begrense bruken av båndbredde, med minst mulig forringelse av kvaliteten. Ulike standardiseringer av slik koding kalles en kodek. Gjennom internett-historien har det blitt utviklet svært mange slike kodeker, og ulike aktører i bransjen har utkjempet langvarige kriger om å oppnå status for nettopp sin kodek som industri-standard. Disse stridighetene har til dels dreid seg om reelle teknologiske uenigheter (hvilken kodek er «best»), men mest om patentering, lisenskostnader og kontroll over video-markedet. En av Operas forutsetninger for allmenn videostøtte i nettleserne var en bred enighet i bransjen om en video-kodek som ikke hadde patent-heftelser. I årene etter 2007 var det imidlertid H.264-formatet som ble dominerende, særlig i egenskap av Apples støtte for formatet på iOS. Aktører som Mozilla har inntil nylig ikke villet implementere støtte for H.264, som har gjort det problematisk å levere en bred HTML-basert videoløsning uten dobbeltdistribusjon – eller bruk av Flash.

Patent-spøkelset

Bak H.264-kodeken står MPEG LA, som består av en rekke bedrifter med patenteierskap i teknologiene som danner grunnlaget for formatet. Google har i de siste årene har gjort forsøk på å detronisere H.264 med sitt WebM-format – med vekslende hell. WebM ble lansert som et format uten patentheftelser og uklare krav om lisenskostnader, og Google truet med å fjerne støtten for H.264 i sin Chrome-nettleser (uten at det ble noe av). MPEG LA har på sin side hevdet at WebM inneholder teknologier de selv eier patent på, og truet med søksmål mot Google og andre som baserer seg på WebM-kodeken.

Verre før det blir bedre

Og slik har dagene gått. Den ene plattformen har stilt seg bak for det ene formatet, den andre for en annen, en tredje begge deler: de som har tapt er brukerne, som ender opp som video-kodek-skilsmissebarn uten mulighet for å trykke på play. (For ordens skyld: NRK bruker H.264 som basis-kodek for vår egen videodistribusjon. Og H.264 endte i stor grad opp med å vinne format-krigen, selv om nye konflikter er på vei i forbindelse med 4K-distribusjon). Som om ikke det var nok med alt styret rundt kodek-krigene, har årene etter 2007 vært preget av en voldsom vekst i mobilbruk. Det har hatt store konsekvenser for Flash, som har vært en viktig basisteknologi for videoavspilling, uavhengig av kodek. Flash sin svanesang på mobil har bla. skyldtes manglende leverandørstøtte, dårligere batterilevetid og sikkerhetsproblemer. I dag finnes det liten eller ingen støtte for Flash på mobile plattformer. Inn kommer HTML5 med sitt <video> -element som en beleilig erstatning for Flash, basert på Opera sitt initiativ fra 2007. Utover kodek-støtte er videoavspilling på mobil også avhengig av en dynamisk tilpasning av båndbredden som passer for variasjoner av Edge-, 3G- og 4G-nett av ymse kvalitet. Løsningen på dette er adaptiv streaming, der valg av videokvalitet skjer dynamisk på mobilenheten, alt ettersom hvor god båndbredde man måtte ha.

Slik gjør vi det nå

Litt på samme måte som med kodek-formatene, krever adaptiv streaming en standarisering av måten videodataene kuttes opp, bufres og transporteres på. HTTP Live Streaming (HLS) er et slikt format, og var Apple sitt svar på dette problemet da iOS 3 ble lansert i 2009. Microsoft har hatt en tilsvarende løsning i Smooth Streaming enda lengre, mens Adobe står bak HTTP Dynamic Streaming (HDS). Nå som vi hører nye trebokstavers forkortelser for formater og teknologi, kan vi bare ane konturene av nye problemer med fragmentering av plattformer og herk rundt brukeropplevelsen på videoavspilling – og det fikk vi: På samme måte som med H.264-kodeken har HLS etterhvert blitt en uunngåelig industristandard (som henger nøye sammen med utbredelsen av iOS). Android har etterhvert fått støtte for HLS, men med en rekke forbehold og leverandør-spesifikke bugs i de ulike implementasjonene. På desktop-siden er det kun Safari på Mac og Internet Explorer på Windows 10 som støtter HLS-basert avspilling direkte. For NRK sin del har denne fragmenteringen gjort at desktop-nettlesere bruker Flash-avspiller med HDS-format. iOS-enheter som iPhone og iPad serveres HTML5-avspiller med HLS-format. Gitt komplikasjonene med HLS på Android-plattformene har vi basert oss på avspilling i vår egen native-app (med brukerstyrt mulighet for å velge web-basert HTML5-avspiller dersom man ønsker det).

IV: Et nytt håp

To nyutviklinger fra de siste årene gjør det nå mulig å se for seg en betrakelig enklere fremtid for avspilling av video på web. Den ene er MPEG-DASH, som er en industristandardisering av adaptiv streaming, med bred støtte blant de store aktørene (selv om det også her lurer lisens- og patentproblemer på horisonten). MPEG-DASH har nå nettleserstøtte i de siste versjonene av Chrome og Android, Internet Explorer, Windows Phone og Safari på Mac OSX. Et tilbakevendende problem med løsninger for HTML5-basert adaptiv streaming er at vi er prisgitt implementasjonen i nettleseren eller operativsystemet man spiller av på. For eksempel er kvalitetsvalg og bufferstørrelse o.l. opp til nettleseren å bestemme, noe som gjør det vanskelig å levere robust avspilling med dynamisk kvalitetsbytte på tvers av ulike plattformer med en og samme løsning. Dette er en av hovedårsakene til NRKs valg av Flash som primærplattform på desktop. Den andre nyvinningen tar sikte på å løse disse problemene. Media Source Extensions er et forholdsvis nytt JavaScript-API i nettleserne som gir klienten tilgang til mekanismene bak bl.a. nedlasting av segmenter, båndbreddetesting og bufring. Industriforumet bak MPEG-DASH har utviklet et rammeverk basert på dette API-et, som har til hensikt å standardisere hvordan adaptiv streaming oppfører seg på tvers av plattformer. Et tilsvarende (og svært lovende) prosjekt er hls.js, som er en JavaScript-implementasjon av HLS-streaming med bred nettleser-støtte.

Veien videre

Målet for NRKs avspillerprosjekt er kort og godt å tilby video som spiller av når du trykker play – enten det er en timeslang dokumentar i nett-TV eller et klipp på NRK.no som varer i et minutt. Det skal fungere i den nettleseren du velger å bruke på den dingsen du velger å bruke; med best mulig streamingkvalitet, og helst uten å gå omveier om Flash-installering (så langt det er mulig å få til). Det vil innebære en omlegging av distribusjonsteknologi som ikke er gjort i en håndvending. Vi jobber også med å konsolidere ulike kodebaser for avspillingslogikk og metadata-API-er, slik at vi kan levere en felles plattform som vil fungere for hele NRK. Da ser vi på ulike løsninger og veier til målet, enten det er komplette tredjeparts-løsninger eller om vi skal basere oss andre abstraksjonslag. Lanseringen av en ny avspiller kommer ikke til å skje med et brak, men fases inn stegvis. Den nåværende planen er å få ut en enkel referanse-spiller for testing og tilbakemeldinger fra publikum, før det vil bli mulig å velge den nye avspilleren som standard – før det til slutt rulles ut til alle. Det kommer til å bli bra!