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
- SDI ↔ IP are different SCTE worlds
SDI = SCTE-104. Streams / TS files = SCTE-35. PLAYDECK does not convert 104 ↔ 35 automatically. - 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_cc,embed_scte35). - 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.
- CC pass-through (
- 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_ccas applicable. - Burn-in: text is drawn into the video pixels; no embed flag required for the text to be visible on outputs.
- Pass-through: caption data stays in the signal; PLAYDECK can preview it; downstream devices decode it. Needs VANC /
- 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
| Direction | What to do |
|---|---|
| Input | Enable 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). |
| Output | With 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'
| Flag | Use 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).
| Path | Result | Notes |
|---|---|---|
| File → SDI → SDI (loop) | Yes | Enable VANC on the receiving input. |
| File → UDP / SRT / DVB → Stream in | Yes | embed_cc='true'; MPEG-2, MPEG-4 Part 2, or H.264 (e.g. NVEnc / Quick Sync). HEVC: no. |
| File → RTMP → YouTube | Yes | embed_cc='true'; YouTube shows CC. |
| File → NDI → NDI (PLAYDECK loop) | Yes | PLAYDECK↔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 MKV | Yes | embed_cc; optional sidecars via scc_capture / anc_capture (.scc / .anc). |
| Recording MPEG-TS | Yes | embed_cc; MediaInfo shows EIA-608/708 muxed in video. |
| SDI → Stream (chain) | Yes | VANC capture in + embed_cc on the stream. |
Stream without embed_cc | No (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
| Path | Result | Notes |
|---|---|---|
| SCTE-104 → SDI → SDI | Yes | Use SCTE-104 commands. Check Event Log >> / <<. |
| SCTE-35 → UDP / SRT / DVB → Stream | Yes | Requires embed_scte35='true'. Codec does not matter. |
| SCTE-35 stream → stream forward | Yes | e.g. Ch1 → UDP → Ch2 → UDP → Ch3; << on both receivers. |
| SCTE-104 on SDI, then stream that channel to IP | 104 on SDI yes; not on IP | No automatic 104→35. Fire SCTE-35 on the stream-sending channel if the IP side needs markers. |
| SCTE-35 toward SDI output | No | Wrong domain for SDI. |
| SCTE-104 toward UDP/SRT/DVB | No | Wrong domain for MPEG-TS. |
| NDI loop (104 or 35) | No | No << on NDI receive in PLAYDECK. |
| Record MPEG-TS + SCTE-35 while recording | Yes | Visible in DVB Inspector; PLAYDECK playback shows << SCTE-35. |
| Record / play MKV | No SCTE | MKV has no embed_scte35. |
| HLS | Partial | No 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
| Article | What you will find |
|---|---|
| Closed Captions & Subtitles | Tracks, burn-in vs pass-through, preview, SRT/ASS |
| SCTE on SDI (SCTE-104) | VANC, commands, SDI loop testing |
| Sending SCTE-35 to a stream server | XML samples, placeholders, Nimble / HLS workflows |
| Recording CC & SCTE | MKV 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.