Playout Service: SCTE-35 markers + overlay metadata #10

Closed
opened 2026-07-12 05:48:55 +00:00 by GKaszewski · 0 comments
Owner

Parent

#2

What to build

Extend the Playout Service to inject SCTE-35 markers and overlay timed metadata into the HLS stream.

SCTE-35: at mid-roll break boundaries (where the schedule engine split a long program), inject EXT-X-DATERANGE tags with SCTE35-OUT / SCTE35-IN attributes into the HLS playlist. IPTV clients that understand SCTE-35 will handle the break correctly.

Overlay metadata: inject ID3 timed metadata tags into HLS segments at configurable trigger points (e.g., 30 seconds before a slot ends). The metadata payload contains overlay data like "Coming up next: [next slot title]". Capable clients render this as a banner; others ignore it.

Acceptance criteria

  • HLS playlist contains EXT-X-DATERANGE tags at mid-roll break boundaries
  • SCTE35-OUT marks the start of a break, SCTE35-IN marks the return
  • EXT-X-PROGRAM-DATE-TIME tag is present (required by SCTE-35 spec)
  • ID3 timed metadata injected near slot boundaries with "coming up next" payload
  • Metadata payload is a simple JSON structure (title, thumbnail_url of next slot)
  • Test: generated HLS playlist with a mid-roll break contains correct SCTE-35 tags
  • Test: metadata trigger fires at configured offset before slot end

Blocked by

  • #6 (Mid-roll break logic — schedule must have break boundaries to mark)
  • #9 (Playout Service core — HLS generation must exist first)
## Parent #2 ## What to build Extend the Playout Service to inject SCTE-35 markers and overlay timed metadata into the HLS stream. SCTE-35: at mid-roll break boundaries (where the schedule engine split a long program), inject `EXT-X-DATERANGE` tags with `SCTE35-OUT` / `SCTE35-IN` attributes into the HLS playlist. IPTV clients that understand SCTE-35 will handle the break correctly. Overlay metadata: inject ID3 timed metadata tags into HLS segments at configurable trigger points (e.g., 30 seconds before a slot ends). The metadata payload contains overlay data like "Coming up next: [next slot title]". Capable clients render this as a banner; others ignore it. ## Acceptance criteria - [ ] HLS playlist contains EXT-X-DATERANGE tags at mid-roll break boundaries - [ ] SCTE35-OUT marks the start of a break, SCTE35-IN marks the return - [ ] EXT-X-PROGRAM-DATE-TIME tag is present (required by SCTE-35 spec) - [ ] ID3 timed metadata injected near slot boundaries with "coming up next" payload - [ ] Metadata payload is a simple JSON structure (title, thumbnail_url of next slot) - [ ] Test: generated HLS playlist with a mid-roll break contains correct SCTE-35 tags - [ ] Test: metadata trigger fires at configured offset before slot end ## Blocked by - #6 (Mid-roll break logic — schedule must have break boundaries to mark) - #9 (Playout Service core — HLS generation must exist first)
GKaszewski added the ready-for-agent label 2026-07-12 05:48:55 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: GKaszewski/k-tv#10