nrk.no

Teksting på tv.nrk.no

Kategorier: Dev, Gjestebloggere, NRKTV & TV


Fra gamle videobånd med analog tidskode til synkron teksting på nettbrett og mobil. Hvordan får vi tekstene med oss gjennom hele NRK-systemet?

Ny artikkel om deler av dette innholdet

Bakgrunn

Dette er en en del av vår «dev»-serie på NRKbeta. Vi slipper til våre flinke utviklere og lar dem forklare litt mer i detalj hva som foregår bak NRKs mange tekniske løsninger. Nå har turen kommet til undertekstene på tv.nrk.no.

Dette kan da ikke være vanskelig?

Dataflyten for å få tekstene på skjerm er på mange måter rett fram, men vi vil prøve å forklare noen utfordringer vi har knyttet til gamle produksjonssystemer. Vi vil også snakke om asynkrone oppdateringer og hvorfor dette er en spesiell utfordring med tanke på tekst til enheter med iOS-operativsystem (iPhone, iPad..).

Man skulle tro at teksting på Internett ikke er noe stort problem. Programmene starter med tidskoden 00h:00m:00s i nett-tv og da kan man vel bare begynne å tekste når skuespillerne snakker etter 11 minutter slik som vist under? Hvordan har det seg at tekstekontoret kan sende en gyldig tekstlinje med starttidspunkt 917.780? For å finne ut det må vi se oppbygningen.

Oversikt over dagens løsning.

Tekster blir sendt som XML på det interne KNF-formatet

 

                                                                                                  Eksempel på Knf format.

 

fra tekstekontoret. Dette skjer når teksterne har gjort jobben sin, eller om et program går i reprise. Midt mellom de gamle produksjonssystemene og tv.nrk.no ligger det et datalag kalt ODA, det er i dette laget tekstene blir mottat av en Rest-service. Etter at dataene er lagret i en Oracle database hentes og transformeres de til SRT-format av nettspilleren slik at publikum får undertekster på tv.nrk.no (under). Oda mottar ikke bare tekster, men også offsetet som er veldig viktig for fortsettelsen. Offsetet mottas fra PRF (Programplanlegging Rapportering for Fjernsyn), et sende- og planleggingsverktøy.

Eksempel på uttegningen på tv.nrk.no (sjekk Chrome dev tools feks).

 

Offset

Offset, også kalt “In_point” eller “TC_IN” er en tidskode for når programmet starter på et bånd, forskyvningen mellom båndstart og programstart. Er offset 0 starter programmet med en gang, men er offset 3600 er forskyvningen 1 time.

Starttidspunkt i frames

Starttidspunktet på en tekstelinje gis i frames, det er 25 frames i ett sekund. En tekstelinje som starter etter 10 sekunder vil da komme med start 250.

 

Under er en skjematisk beskrivelse av hvordan tekst og offset flyter til nett-tv. Legg også merke til siste steg hvor vi viser hvordan teksten blir normalisert.

Mulige fallgruver

  1. Offset fra PRF kan være feil på et tidspunkt, men senere meldinger kan rette opp feilen

  2. Tekst kan komme før offset

Oda mottar tekst og offset uavhengig av hverandre så hvis offset fra PRF er feil (1) vil det også bli feil ut til publikum når nett-tv trekker fra enten for lite eller for mye. Offsettet eller teksten blir som regel korrigert i slike tilfeller. Nett-tv spilleren sjekker tekstegrunnlaget ved hver forespørsel. Det vil si at kommer det en ny forespørsel etter grunnlaget er ordnet vil nett-tv spilleren kalkulere tekstene på nytt og bildet vil passe til teksten. Dette er en stor fordel med dynamisk generering av tekstene etter web forespørsler kontra statisk innhold.

Hvis teksten kommer før offset (2) vil ikke nett-tv ha noe å trekke fra og dermed vil teksten starte fra 10:11:51.

iOS-flyt

Til nå har vi sett hvordan en tekstlinje med start 917.780 faktisk gir mening. Vi har fokusert på hvordan tekstene produseres hvis du bruker flash avspilleren på tradisjonell desktop. Desktop var også førsteprioritet da tv.nrk.no ble lansert. Men dingsene gjorde sitt inntog og det var mange som ønsket tekster på sine iPhones og iPads. Løsningen for iOS bygger på mye av det samme som for desktop.

                                                                                   Eksempel på WebVTT

 

Tekster og offset mottas fortsatt til ODA, men ettersom iOS avspillingen krever tekst på WebVTT-formatet (over) ble arkitekturen noe anderledes. Under er arkitekturen for teksting til iOS forsøkt forklart.

  1. Den øverste delen kjennes sikkert igjen fra forrige skjema, tekstene mottas fortsatt fra tekstekontoret til en web service.
  2. Etter at servicen lagrer teksten i databasen for desktop har den nå et ekstra steg hvor KNF konverteres til Srt (eksempel under).

  3. Srt teksten legges på en kø og leses av et python script på en Mac for så å bli dyttet inn i Apples proprietære “Multimedia segmenter”. Multimedia segmenter produserer WebVTT formatet vi var ute etter.

  4. Når vi til slutt har WebVTT formatet vårt legges det på et San og eksponeres fra en web server ut til iOS enhetene.

                                                                                                                                           Eksempel på Srt

 

I motsetning til på desktop så leser ikke iOS avspilleren dataene (tekst/offset) rett fra kilden og kalkulerer dynamisk. Teksten leses heller som en statisk ressurs etter den er blitt produsert. Det vil si at den effekten man får på desktop hvor nye web forespørsler retter tekstene dynamisk ikke finner sted. For å rette feilaktige tekster, må de reproduseres og legges ut på nytt. I starten så vi ikke denne begrensningen. Hvis feilen lå i tekstegrunnlaget ble det ordnet ved retting hos tekstekontoret ettersom de da sender en ny versjon og tekstene blir rekalkulert, men var feilen på offset ble det fortsatt feil ut til brukeren, ettersom den samme teksten fortsatt lå der. Det var tydelig at vi måtte reprodusere tekstene ikke bare når det kom inn rettelser på teksten, men også når offset ble rettet.

Offset eller TC

Er en betegnelse på starttiden for et program og henger igjen fra gammelt av da NRKs programmer ble lagret på bånd. Av ulike grunner kunne man ikke definere programstart fra starten av båndet, men måtte sette en fiktiv start. Standard i NRK var 10 timer. Skal man så tekste dette programmet må tekstene også starte på 10 timer. Tekstelinjene må være et produkt av tidspunktet hvor folk snakker + forskyvningen, hvis ikke blir teksten og bildet usynkront. Tekstene blir i utgangspunktet produsert for TV-avviklingen, og de samme tekstene er grunnlaget for nett-tv.  Utfordringen for nett-tv består i å fjerne det pålagte offsetet slik at teksten blir relativ til et startidspunkt på 00h.00m.00s ikke 10h:00m:00s. Denne prosessen kaller vi å “normalisere teksten”.

Erfaringer gjort med utviklingen av disse løsningene

 

  • Det er en stor fordel i det å ha innhold som kan skapes dynamisk når kildene man mottar data fra forandrer seg og rekkefølgen er uforutsigbar. Statisk innhold løper den faren at blir det nettop  det, statisk, statisk og utdatert.
  • Løsningen for iOS er blitt komplisert. Det er mange steg involvert grunnet kravet om WebVTT. Det hadde kanskje lønnet seg å produsere WebVTT teksten selv i web servicen som mottar teksten i stedet for å bruke Apples proprietære software.

Er det andre som har efaring med å produsere undertekster? Kom gjerne med innspill om dere har implementert andre eller lignende løsninger i deres prosjekter.

 

Takk til Øyvind Holmstad for grafikk og Terje Klevsand for informasjon.

14 kommentarer

    • Annette De Freitas (svar til Kristian)

      Hei Kristian,

      Den tekniske løsningen i den eksisterende Android appen har dessverre ikke mulighet for undertekster. Vi jobber med en ny app der dette vil fungere. Mer informasjon om den nye TV-appen for Android, samt når den vil lanseres blir å finne her inne på NRK Beta før sommeren.

      Hilsen,
      Annette
      Mobilteamet

  1. Bo Vagner Højer

    Før jul var jeg igang med at lave min egen version af en nrk-dowloader, så jeg kunne komme over nogen af begrænsningerne med «browser» afspillerene. Jeg ville bruge jeres api; men fandt ud af at det er meget fattigt og da jeg har meget lidt tid og meget at lave røg projektet op på venter-hylden. Det er interessant at se at I benytter srt formatet internt, så er det muligt at hente dette direkte?

    Svar på denne kommentaren

  2. Øyvind Waage

    Lang forklaring, skjønner at det er mye avanserte greier, men har fortsatt ikke fått svar på hvorfor ikke NRK kan levere undertekster til Android når feks Netflix får det til.

    Har dere oppdaterte informasjoner?

    Svar på denne kommentaren

  3. Stadig ikke svar på hvorfor netflix og mange andre kan tekste i Android men ikke dere?

    Hvilket tvinger frem et spørsmål til. Hvorfor kan dere ikke samarbeide med DR, SVT og BBC (f.eks.) og lage løsninger som fungerer i stedet for å sitte på hver deres lille tue og lage ting som ikke fungerer?

    Svar på denne kommentaren

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *. Les vår personvernserklæring for informasjon om hvilke data vi lagrer om deg som kommenterer.