Som en del av satsingen «Hjemmebanen for norsk idrett», har vi i TV 2 mangedoblet antallet live sportsbegivenheter som strømmes gjennom vår videoplattform. I tillegg til å vise mer enn 5.000 fotball-, håndball-, ishockey-, basketball-, volleyball-, og innebandykamper på TV 2 Play, håndterer videoplattformen vår nå også alle live sendinger for Amedias Direktesport-tjeneste, samt MyGames strømming av breddeidrett.
Totalt skal videoplattformen håndtere mer en 20.000 sportsbegivenheter hvert år fremover, med høy grad av samtidighet. Til sammenligning strømmet vi på TV 2 Play 2.721 sportsbegivenheter i 2021.
Det vil si at vi nå skal håndtere mer enn syv ganger så mye live innhold som vi gjorde for bare to år siden!
For å kunne håndtere en sånn enorm økning i live sendinger på en kostnadseffektiv og bærekraftig måte, har vi bygget en automatisert og skalerbar videoplattform basert på mediainfrastruktur og komponenter hos Amazon Web Services (AWS).
Målet for denne plattformen er at alle live sendinger planlegges, provisjoneres og orkestreres med minst mulig manuell involvering.
«Løsningen skal kunne håndtere 1.000 samtidige live-sendinger.»
Derfor AWS
Vi undersøkte mulige eksisterende løsninger i markedet, men konkluderte med at vi ville bygge løsningen basert på AWS-komponenter. Vi har hatt et langt og godt samarbeid med AWS og vi har i tillegg mange ansatte som har svært god kompetanse og erfaring med mediatjenestene til AWS. Dette gav oss et godt utgangspunkt for å få dette til.
Vi satte oss en del konkrete mål for den nye videoplattformen:
- Samtidighet: Løsningen skal kunne håndtere 1.000 samtidige live-sendinger. Dette kan nok virke som et unødvendig høyt mål, men det er faktisk basert på et potensielt scenario. I framtiden kan plattformen bli utvidet til å håndtere et enda større og bredere utvalg av idrettsbegivenheter, og da er ikke dette tallet usannsynlig.
- No hands: Løsningen skal være helautomatisk fra kamera til sluttbruker. Dette betyr at det ikke skal være behov for manuell håndtering knyttet til klargjøring, oppkobling, sending og distribusjon av videosignalet. Alt skal skje automatisk basert på terminlister og planer.
- Passiv avvikling: Løsningen skal gi beskjed om noe feiler, og ikke kreve aktiv overvåking.
- Kostnadseffektivitet: Kostnad per kamp må være så lav at det å sende breddekamper kan forsvares økonomisk selv om det er et begrenset antall med seere på en sending.
![image: TV 2-utviklere vil gjøre nettsidene spoilerfrie](https://www.kode24.no/images/80282602.jpg?imageId=80282602&x=0&y=0&cropw=100&croph=100&width=74&height=50&compression=80 640w, https://www.kode24.no/images/80282602.jpg?imageId=80282602&x=0&y=0&cropw=100&croph=100&width=117&height=78&compression=80 1024w, https://www.kode24.no/images/80282602.jpg?imageId=80282602&x=0&y=0&cropw=100&croph=100&width=148&height=100&compression=70 320w)
TV 2-utviklere vil gjøre nettsidene spoilerfrie
AWS-tjenestene
For å løse behovene over, bestemte vi oss for å bygge løsningen basert på følgende AWS-tjenester:
- AWS Elemental MediaLive for enkoding, for å kunne komprimere innkommende signal fra kamera på arena og kode dette etter TV 2s ABR (Adaptive Bitrate) profil for å støtte avspilling på flest mulig enheter og ved varierende nettverkskvalitet.
- AWS Elemental MediaPackage for pakketering og leveranse av video til sluttbruker. Den segmenterer video (hakker den opp i n sek biter) og pakker video for leveranse til de forskjellige sluttbrukerplattformene.
- Amazon Cloudfront og Akamai som CDN (Content Delivery Network), som kan cache opp videosegmenter og servere dem til sluttbruker, for å unngå høy trafikk direkte mot pakketerer. Dette sikrer både lavere kost og bedre skalerbarhet.
- AWS Lambda CRON scheduler, for just-in-time provisjonering av live kanaler. Denne kan kjøre med jevne intervaller og sjekke hvilke kamper som skal starte neste timen og opprette nødvendige live kanaler i AWS.
Konseptuelt ser dette slik ut:
![image: Nå kan TV 2 strømme direkte 20.000 ganger i året: «Ingen andre har pusha grensene slik» image: Nå kan TV 2 strømme direkte 20.000 ganger i året: «Ingen andre har pusha grensene slik»](https://www.kode24.no/images/80410477.jpg?imageId=80410477&x=0&y=0&cropw=100&croph=100&width=670&height=238)
Slik fungerer det
Plattformen provisjoneres automatisk for alle planlagte live sendinger. Disse live-sendingene planlegges for det meste automatisk basert på terminlistene til de ulike idrettsforbundene. Målet er at alt planlegges, provisjoneres og orkestreres uten manuell involvering:
- Terminlistene for de ulike seriene opprettes og oppdateres av idrettsforbundene selv. Terminlistene inneholder detaljer om alle kampene, som kamptidspunkt, lag og arena.
- Disse kampdetaljene hentes automatisk inn fra idrettsforbundenes egne tjenester til TV 2s interne sportsdata-tjeneste. For de kampene TV 2 har redaktøransvar for, vil sportsplanleggerne i TV 2 kvalitetssikre og kontrollere detaljene før kampene legges inn i TV 2 sendeskjema. Tilsvarende vil kamper som samarbeidspartnere har redaktøransvar for, planlegges i deres egne løsninger basert på terminlister og egne sendeplaner.
- I begge tilfeller gjøres det deretter kall mot videoplattformen vår for å «pre-schedulere» kampene. Dersom kamper avlyses, utsettes eller fremskyndes gjøres det nye kall mot videoplattformen for å «re-schedulere». På denne måten har videoplattformen til enhver tid oversikt over alle planlagte sendinger som skal provisjoneres og orkestreres.
- En AWS cron-event kjører med jevne intervaller og sjekker om det er kamper som starter den neste timen. Live-kanaler blir automatisk opprettet i AWS og startet en time før kampstart. Dette for å tillate tid til å koble videosignal mot enkoder, gjøre lyd- og bildesjekk, og håndtere eventuelle problemer før kampen skal sendes.
- Produsenten mottar RTMP-endepunkt og streamkey, og bruker dette til å koble kamera på arena opp mot videoplattformen. Streamkey’en sikrer en unik identifisering av kamera og arena, og sørger for at videosignal kobles mot riktig sending. Når kampen starter, pushes videosignalet direkte fra kamera til RTMP endepunktet i videoplattformen.
- I videoplattformen brukes så AWS Elemental MediaLive til å encode videosignalet til nødvendige videoformater. Deretter vil AWS Elemental MediaPackage pakketere, tilpasse og kryptere de ulike videoformatene, slik at de er klargjort for distribusjon til de ulike sluttbrukerplattformene.
- Videoplattformen genererer også automatisk playback-URL'er slik at sluttbrukerne kan spille av live kampene i appene til TV 2 Play, Direktesport og MyGame.
- Live data fra idrettsforbundenes egne løsninger hentes inn automatisk mens kampene pågår, og brukes til å sette klokke, scoringer og lignende som grafikk på sendingene. Sekretariatet på arenaene kan også sende inn signaler ved uønskede hendelser som automatisk slår av lydoverføring og legger på venteplakat.
- Når kampen er ferdig tas automatisk all AWS-infrastruktur knyttet til live-kanalen ned, og det genereres opptak av kampen som arkiveres og tilgjengeliggjøres for sluttbruker.
«Plattformen har innebygget automatisk feilhåndtering.»
Feil og monitorering
Plattformen har innebygget automatisk feilhåndtering. I tillegg sendes det umiddelbart push-varsler til ressurspersoner, dersom hendelser inntreffer som krever manuell håndtering.
Vi har også bygget et monitoreringsverktøy, der sportsplanleggere og vaktpersonell enkelt kan få oversikt over status på live sendingene og eventuelle feilsituasjoner.
Her kan de også manuelt starte og stoppe videostrømmer og eventuelt overstyre planlagte start- og sluttidspunkter underveis i sendingene.
I tillegg har kameraoperatør på arena tilgang til en detaljside for den enkelte kampen som gir dem påsyn og grunnleggende monitoreringsmuligheter, slik at de kan kvalitetssikre at lyd og bilde kommer gjennom fra arena til TV 2 videoplattform.
![image: Studenter bak TV2.no-boks: - Overraskende mye brukt](https://www.kode24.no/images/80086758.jpg?imageId=80086758&x=0&y=0&cropw=100&croph=100&width=63&height=40&compression=80 640w, https://www.kode24.no/images/80086758.jpg?imageId=80086758&x=0&y=0&cropw=100&croph=100&width=100&height=63&compression=80 1024w, https://www.kode24.no/images/80086758.jpg?imageId=80086758&x=0&y=0&cropw=100&croph=100&width=128&height=84&compression=70 320w)
Studenter bak TV2.no-boks: - Overraskende mye brukt
AWS Lambda
Med en serverless arkitektur og automatisk provisjonering sikres en kostnadseffektiv og bærekraftig rigg. AWS-infrastruktur skaleres opp og ned etter behov basert på sendeskjema, og vi unngår å betale for infrastruktur som ikke til enhver tid er nødvendig.
Orkestrering gjøres med en state-machine bygget på AWS Step Functions, som har steg-for-steg kontroll med hva som skjer i hver eneste prosess i systemet og sørger for at vi har robust feilhåndtering og sikrer at plattformen ikke går ned. Dette er også støttet av en event-drevet arkitektur, der vi lytter og reagerer på endringer, hendelser og meldinger.
Plattformen er også i stor grad bygget opp av mikrotjenester basert på AWS Lambda. Dette har gjort det svært raskt og smidig å utvikle forbedringer og nye features.
Pushet grenser
Vi er veldig godt fornøyde med det vi har oppnådd så langt, men vil fortsette å revidere arkitekturen vår og teste ut nye idéer og forslag, for å gjøre riggen enda mer skalerbar, vedlikeholdsvennlig og bærekraftig.
Vi har fremdeles et stykke å gå før vi kan håndtere 1.000 samtidige sendinger, men her tar vi stadig nye steg sammen med AWS.
Vår forståelse er at det finnes få eller ingen andre kunder som har pushet grensene for samtidighet og skalerbarhet for AWS sine mediatjenester på den måten vi har gjort i dette prosjektet.
![image: TV 2 velger Svelte: - Lett å gå seg vill i React](https://www.kode24.no/images/80137884.jpg?imageId=80137884&x=0&y=0&cropw=100&croph=100&width=71&height=48&compression=80 640w, https://www.kode24.no/images/80137884.jpg?imageId=80137884&x=0&y=0&cropw=100&croph=100&width=112&height=76&compression=80 1024w, https://www.kode24.no/images/80137884.jpg?imageId=80137884&x=0&y=0&cropw=100&croph=100&width=140&height=96&compression=70 320w)