Closed Captions & SCTE — Overview

PLAYDECK can carry Closed Captions (CEA-608 / CEA-708) and SCTE ad/splice markers through many inputs and outputs. They are different signals:

  • Closed Captions travel with the video (SDI VANC, or embedded in MPEG-2 / MPEG-4 / H.264 elementary streams).
  • SCTE-104 is used on SDI (VANC).
  • SCTE-35 is used in MPEG-TS (UDP, SRT, DVB-compatible streams, TS recordings, HLS segments).

This page is the map: what works from where to where, what you must enable, and where the limits are. Step-by-step setup lives in the linked articles below.

Note: Soft Subtitles (SRT / ASS) are always burned into the picture. They are not the same as Closed Captions. See Closed Captions & Subtitles.

In this article:
Quick rules
How to enable CC and SCTE
Closed Captions matrix
SCTE matrix
Known limits
Related articles


Quick rules

  1. SDI ↔ IP are different SCTE worlds
    SDI = SCTE-104. Streams / TS files = SCTE-35. PLAYDECK does not convert 104 ↔ 35 automatically.
  2. Streams need embed flags
    Unlike the SDI “VANC Data” checkbox for Inputs, stream and recording options are easy to miss. You must set them in the stream/recording Parameter / config string (embed_ccembed_scte35).
  3. Codec vs protocol
    • CC pass-through (embed_cc): depends on video codec (MPEG-2, MPEG-4 Part 2, H.264 — not HEVC).
    • SCTE-35 (embed_scte35): depends on MPEG-TS transport, not on the video codec.
  4. Pass-through vs burn-in (CC)
    • Pass-through: caption data stays in the signal; PLAYDECK can preview it; downstream devices decode it. Needs VANC / embed_cc as applicable.
    • Burn-in: text is drawn into the video pixels; no embed flag required for the text to be visible on outputs.
  5. UDP loopback
    Prefer your machine’s LAN IP (e.g. udp://192.168.x.x:5000?pkt_size=1316). udp://127.0.0.1:… is unreliable in current setups.

How to enable CC and SCTE

SDI
DirectionWhat to do
InputEnable VANC Data → Enable Closed Captions and SCTE-104 Triggers on that input. This turns on VANC/CC/ANC capture (there is some processing cost — that is why it is opt-in).
OutputWith a Closed Captions license, PLAYDECK enables CC/VANC on the SDI renderer automatically.

Streams and Recordings

Open Parameter on the stream or recording and set the flags in the config string (examples):

embed_cc='true'
embed_scte35='true'


FlagUse for
embed_cc='true'CC pass-through into MPEG-2 / MPEG-4 / H.264 (UDP, SRT, DVB, HLS segments, TS/MKV record, RTMP/FLV, etc.)
embed_scte35='true'SCTE-35 into MPEG-TS only (UDP, SRT, DVB, TS file record, HLS segments). Not for MKV or RTMP/FLV.

Without these flags, pass-through CC / SCTE-35 will not leave PLAYDECK on that output — even if the UI looks “ready”.


Injecting SCTE

Attach SCTE commands to clips, blocks, overlays, or Action buttons. Choose SCTE-104 when targeting SDI, SCTE-35 when targeting MPEG-TS streams or TS files. Details and XML samples: SCTE-104 on SDI · SCTE-35 to servers.


Closed Captions matrix

Verified PLAYDECK behaviour (pass-through unless noted).

PathResultNotes
File → SDI → SDI (loop)YesEnable VANC on the receiving input.
File → UDP / SRT / DVB → Stream inYesembed_cc='true'; MPEG-2, MPEG-4 Part 2, or H.264 (e.g. NVEnc / Quick Sync). HEVC: no.
File → RTMP → YouTubeYesembed_cc='true'; YouTube shows CC.
File → NDI → NDI (PLAYDECK loop)YesPLAYDECK↔PLAYDECK only. NDI Studio Monitor / vMix do not show CC.
File → HLS (.m3u8)Yes*CC in segments; PLAYDECK can play the m3u8 and show CC. (*Not as separate tags in the playlist file.)
Recording MKVYesembed_cc; optional sidecars via scc_capture / anc_capture (.scc / .anc).
Recording MPEG-TSYesembed_cc; MediaInfo shows EIA-608/708 muxed in video.
SDI → Stream (chain)YesVANC capture in + embed_cc on the stream.
Stream without embed_ccNo (pass-through)Burn-in still works (pixels).

Burn-in works on SDI, NDI, streams, and desktop outputs whenever CC is rendered into the frame (channel pass-through option off).

More UI detail: Closed Captions & Subtitles.


SCTE matrix

PathResultNotes
SCTE-104 → SDI → SDIYesUse SCTE-104 commands. Check Event Log >> / <<.
SCTE-35 → UDP / SRT / DVB → StreamYesRequires embed_scte35='true'. Codec does not matter.
SCTE-35 stream → stream forwardYese.g. Ch1 → UDP → Ch2 → UDP → Ch3; << on both receivers.
SCTE-104 on SDI, then stream that channel to IP104 on SDI yes; not on IPNo automatic 104→35. Fire SCTE-35 on the stream-sending channel if the IP side needs markers.
SCTE-35 toward SDI outputNoWrong domain for SDI.
SCTE-104 toward UDP/SRT/DVBNoWrong domain for MPEG-TS.
NDI loop (104 or 35)NoNo << on NDI receive in PLAYDECK.
Record MPEG-TS + SCTE-35 while recordingYesVisible in DVB Inspector; PLAYDECK playback shows << SCTE-35.
Record / play MKVNo SCTEMKV has no embed_scte35.
HLSPartialNo SCTE/CUE tags in the .m3u8. PLAYDECK playback of the m3u8 can still show << SCTE-35 from segments. External packagers that only read manifest cues need another tool (e.g. Nimble).

DVB-compatible streaming in PLAYDECK behaves like UDP/SRT for CC and SCTE-35 once the embed flags are set (format='dvb', still udp:// or SRT URL).


Known limits

SCTE-104 together with an active CC/ASS track (SDI)

If a clip is playing with an active Closed Caption or ASS text track, SCTE-104 may only arrive intermittently on an SDI loop (>> send is stable, << receive is not). Disable the text track if SCTE-104 reliability on SDI is critical.
This conflict was not seen on MPEG-TS streams when using SCTE-35 (with or without embed_cc).

NDI
  • CC: works in a PLAYDECK↔PLAYDECK loop; not shown in NDI Studio Monitor or vMix.
  • SCTE: not received back over NDI in PLAYDECK.

HEVC

embed_cc does not deliver usable CC pass-through with HEVC in our tests. Use MPEG-2, MPEG-4 Part 2, or H.264 for CC pass-through.

HLS manifests

PLAYDECK does not write SCTE/CUE tags into the .m3u8. Caption and SCTE-35 data can still be present in the underlying segments.


Related articles

ArticleWhat you will find
Closed Captions & SubtitlesTracks, burn-in vs pass-through, preview, SRT/ASS
SCTE on SDI (SCTE-104)VANC, commands, SDI loop testing
Sending SCTE-35 to a stream serverXML samples, placeholders, Nimble / HLS workflows
Recording CC & SCTEMKV vs TS, sidecars, playback checks

Event Log tips

Use Logs → SCTE:

  • >> = marker applied on the sending channel
  • << = marker detected on a receiving playlist/stream

For TS files, DVB Inspector (or TSDuck) is useful to confirm SCTE-35 inside the file; MediaInfo often shows CC clearly but not SCTE-35.