Subtitling & captioning
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
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.
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.
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.
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
| 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 |
| Container / protocol | CTA-608 | CTA-708 | WebVTT | Teletext | TTML / IMSC | DVB |
|---|---|---|---|---|---|---|
| MPEG-TS (UDP · SRT · RTP · file) | — | decode | ||||
| RTMP | — | — | — | — | ||
| MP4 file | passthru | passthru | — | — | ||
| HLS TS segments | passthru | passthru | — | — | ||
| HLS CMAF / fMP4 | passthru | passthru | — | — | ||
| DASH CMAF | passthru | passthru | — | — | ||
| Media Store / TAMS | passthru | passthru | — | — |
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
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.
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 →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 →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
Four things to understand about how Norsk handles subtitles and captions.
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.
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.
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.
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.
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