Subtitling & captioning

Ingest one standard.
Deliver another.
Keep the styling.

Caption formats don't interchange cleanly — each carries colour, italics, and positioning its own way, and direct conversion flattens the styling or drops what the target can't express. Norsk decodes every text-based caption format into one styled internal model that holds the full detail, and collapses it to the target only at encode time. Ingest CTA-608, deliver WebVTT. Ingest TTML, deliver Teletext. The styling survives the trip.

How it works

Every text format, through one styled model.

Norsk converts between caption formats by routing everything through a single internal representation — so no styling is lost in transit and each output gets the fullest version of the styling it can carry.

Step 01
One internal model, full fidelity

Norsk decodes every text-based format into a single styled representation: colour as exact RGBA, italic and underline, line and region positioning, character set. The detail is held in full and collapsed to a target's palette only at encode — so each output receives the richest styling it can actually represent, rather than a lowest-common-denominator version flattened at ingest.

Step 02
Convert anything text to anything text

The subtitleConvert processor maps any text source to any text target through the model — WebVTT, TTML/IMSC, CTA-608, CTA-708, Teletext, and speech-to-text and translation sources all interconvert. TTML/IMSC is the format to reach for when fidelity matters most: Unicode-native, CSS-styled, and increasingly the interchange format broadcasters are standardising on.

Step 03
Authored with the media, not bolted on

There's no separate "embed captions" step. Each output node authors captions as it writes the media, placing them where the container expects — so one workflow ingests a source, converts it, and delivers into MPEG-TS, RTMP, MP4, HLS, DASH, or a TAMS record without a standalone muxing stage.

Reference

The detail.

What each format carries

Format Colour Italic / underline Positioning Character sets
WebVTT Full (8 named + exact RGBA) Yes line / position / size / align / vertical Full Unicode
TTML / IMSC Full (CSS / RGBA) Yes region origin / extent / align Full Unicode
CTA-708 Full (RGBA + opacity) Yes window anchor / justify / size Unicode / legacy CJK
CTA-608 Partial (8 colours + white-italic) Yes row + PAC indent Base + extended Latin
Teletext (incl. OP-47) Partial (8 colours, fg + bg) Not in spec vertical (line); horizontal deferred 13 Latin national sets
DVB (bitmap) Full palette (pixels) N/A Pixel-exact N/A
Transcription (AWS / Azure / Whisper) source source source Full Unicode

What each container authors

Container / protocol CTA-608 CTA-708 WebVTT Teletext TTML / IMSC DVB
MPEG-TS (UDP · SRT · RTP · file) in video in video PES PES decode
RTMP SEI SEI
MP4 file passthru passthru wvtt stpp
HLS TS segments passthru passthru rendition IMSC (stpp)
HLS CMAF / fMP4 passthru passthru rendition (wvtt) IMSC (im1t)
DASH CMAF passthru passthru rendition IMSC (stpp)
Media Store / TAMS passthru passthru wvtt stpp
in video / SEI authored into the picture PES / wvtt / stpp / im1t / rendition / IMSC authored as a native track passthru incidental passthrough only decode ingest only not carried

Conversion — any text format to any other

Via subtitleConvert. DVB is image-based, so it interconverts with no text format; its path is to burn-in via subtitleToImage and compose. Rendering a text format into the picture is something we do on request — talk to us about your burn-in requirement.

Source ↓ / Target → 608 708 WebVTT Teletext TTML Burn-in (image)
CTA-608 on request
CTA-708 on request
WebVTT on request
Teletext on request
TTML / IMSC on request
Transcription (AWS / Azure / Whisper) on request
Translated (AWS) on request
DVB bitmap ✓ (via subtitleToImage)

Use cases

When the format you receive isn't the format you ship.

The scenarios where caption conversion matters most are those where contribution formats, delivery targets, and compliance requirements don't align — which is most broadcast pipelines.

Legacy captions to streaming delivery

CTA-608/708 in, WebVTT and IMSC out

A broadcaster receives contribution feeds carrying CTA-608 and CTA-708 and needs the same programming on OTT as HLS and DASH. Converting by hand risks losing the caption colour, roll-up styling, and positioning the compliance team signed off on.

Norsk decodes the incoming captions into the styled model and authors WebVTT and TTML/IMSC tracks into the HLS and DASH outputs, styling intact. Ingest what the feed sends; ship what the platform expects.

Talk to us about caption conversion →
European broadcast formats to OTT

Teletext and DVB into a modern pipeline

A European broadcaster works in Teletext (including OP-47 in VANC) and DVB bitmap subtitles and wants both in an OTT workflow. Teletext carries national character sets and per-line positioning; DVB isn't text at all.

Norsk converts Teletext into any text target — WebVTT, IMSC, 608/708 — carrying colour and vertical position through the model. DVB, being bitmap, renders to image via subtitleToImage and burns into the picture with compose. Both source formats reach OTT.

Talk to us about your caption formats →
Live captioning and translation from speech

Transcription and translation into every delivery format

An operator needs live captions where no upstream track exists, in more than one language. Speech-to-text produces word-timed text, but it still has to become the specific formats each target requires.

Norsk takes word-timed transcription from AWS, Azure, or Whisper — and AWS translation — as sources in the model, and converts them into any text caption format: WebVTT and IMSC for streaming, 608/708 into MPEG-TS or RTMP. One source, every delivery format, original and translated.

Talk to us about live captioning →

Capabilities

What the caption engine does.

Four things to understand about how Norsk handles subtitles and captions.

Styled model
The styled internal model

Every text-based format decodes into one representation holding colour (RGBA), italic and underline, positioning, and character set. Where a source is richer than a target, the full detail is kept and collapsed only at encode — conversion preserves the most each output can carry.

Conversion
Any text format to any other

subtitleConvert maps any text source to any text target through the model. TTML/IMSC — Unicode-native and CSS-styled — is the format to reach for when fidelity matters most, and the one seeing rising adoption. DVB is the exception: as a bitmap it renders to image via subtitleToImage for burn-in with compose, rather than converting to text.

Authoring
Authored with the media, per container

No separate embed step — each output authors captions as it writes. MPEG-TS and RTMP place CTA-608/708 into the video itself; MP4, HLS, DASH, and TAMS-based outputs author WebVTT and TTML/IMSC as native tracks.

Transcription
Transcription and translation

Word-timed text from AWS, Azure, and Whisper speech-to-text — and AWS translation — enter as sources in the model and convert into any supported text format. One captioning or translation source can feed WebVTT, IMSC, 608, 708, and Teletext outputs together.

Talk to us about subtitling and captioning

Whether you're bridging legacy 608/708 to streaming, bringing Teletext and DVB into an OTT pipeline, or adding live captioning and translation from speech, get in touch and we'll map it to your formats.

Talk to us